在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近看到学员在问这样的问题(转载) 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个属性“也去建一个实体类。(太空虚?)
如果 从前端往逻辑层 和数据层 用类来传递数据,需要 第一种实体类的写法。 |
2022-07-18
2022-08-17
2022-11-06
2022-07-29
2022-08-18
请发表评论