zoukankan      html  css  js  c++  java
  • 使用PHP创建实体类的一个认识误区

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

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

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

  • 相关阅读:
    OpenCV 最小二乘拟合方法求取直线倾角
    BFS-hdu-4101-Ali and Baba
    手机安全卫士开发系列(1)——功能列表
    【Linux常用工具】1.1 diff命令的三种格式
    手机安全卫士开发系列(2)——splash界面
    Ruby学习笔记(二)
    jQuery Animation实现CSS3动画
    HDU2699+Easy
    android中解析文件的三种方式
    查找某元素
  • 原文地址:https://www.cnblogs.com/dengcw/p/5685733.html
Copyright © 2011-2022 走看看