• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近看到学员在问这样的问题(转载)

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个属性“也去建一个实体类。(太空虚?)

 

如果 从前端往逻辑层 和数据层 用类来传递数据,需要 第一种实体类的写法。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
linux下安装php扩展发布时间:2022-07-10
下一篇:
php执行外部命令函数:exec()、passthru()、system()、shell_exec()对比 ...发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap