您的位置:首页 > 编程语言 > PHP开发

使用PHP创建实体类的一个认识误区

2016-07-19 17:55 375 查看
最近看到学员在问这样的问题(转载)

1、php如何实现类似 java的set和get

2、PHP如何构建实体类

之前也有很多人问,那么这里来简单解答一下。

3句话:

1、关于java或者.net中使用实体类的作用、好处和有逼格支出大家请自行百度,不再赘述。

2、PHP如果业务不是十分复杂(譬如复杂到你根本记不清到底有多少个业务数据表),一般不需要建立实体类

3、不要在PHP上面研究什么泛型之流的东西。如果硬要这样,为何不直接使用java? PHP就是为了快帅酷的做web,PHP要是哪天变的和java一样的语法结构,或者甚至必须编译后才能运行。那么我绝对会放弃PHP而直接使用 Java

那么问题来了。譬如我就喜欢和java那样用实体类的写法该怎么办?

譬如

function getNews()

{

这里我要返回一个新闻实体类集合。

譬如 $news=new NewsMapper();

$news->title=”xxx”;

$news->id=xxx;

return array($news);

}

到这个代码。很多人会因为“受 java或.net”影响,特别的在外部创建一个 类叫做NewsMapper,譬如:

class NewsMapper

{

public $title=””;

public $id=0;

}

当然这么做,是可以的。也没啥问题,到时候你只要include或require正确即可、

标题中我讲的”误区“,并不是说上面这个写法是错的。而是有的小伙伴认为 必须这么写才行。(这才是误区

那么请看,如果不使用上面的写法我们应该怎么办?

function getNews() // 还是这个方法

{

这里我要返回一个新闻实体类集合。

譬如

$news->title=”xxx”;

$news->id=xxx;

return array($news);

}

是的。你没看错,直接这么写就可以了。

只不过,运行时会报出一个警告,告诉你$news对象没有定义之流。 其实可以直接在php.ini中关闭这个警告

当然,为了”规范“,你就是不想关闭警告的话可以这么写

function getNews() // 还是老夫我

{

这里我要返回一个新闻实体类集合。

譬如 $news=new stdClass(); //注意这里

$news->title=”xxx”;

$news->id=xxx;

return array($news);

}

是的。你没看错,这样就可以了。stdClass是PHP最顶层的类,不包括任何属性和方法。等于是一个不穿衣服的裸体类。

当你执行$news->title时。 PHP自动会帮你增加属性。以此类推。

这种做法的一般用于返回json格式,供前台调用。同时你在其他地方并不需要知道这个类是啥类,不需要知道类名。只需要调用这个类的属性。

另外,如果你仅仅是临时使用,就像PHP7的匿名类一样。那么应当使用这种方法。而不是”就1-2个属性“也去建一个实体类。(太空虚?)

如果 从前端往逻辑层 和数据层 用类来传递数据,需要 第一种实体类的写法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: