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

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

  • 相关阅读:
    c#自动更新+安装程序的制作
    VS2013项目受源代码管理向源代码管理注册此项目时出错
    WinDbg配置和使用基础
    InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
    PowerDesigner 如何生成数据库更新脚本
    用户故事(User Story)
    Troubleshooting Record and Playback issues in Coded UI Test
    Coded UI
    compare two oracle database schemas
    How to: Use Schema Compare to Compare Different Database Definitions
  • 原文地址:https://www.cnblogs.com/dengcw/p/5685733.html
Copyright © 2011-2022 走看看