使用PHP建立實體類的一個認識誤區

來源:互聯網
上載者:User

標籤:

最近看到學員在問這樣的問題(轉載)

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個屬性“也去建一個實體類。(太空虛?)

 

如果 從前端往邏輯層 和資料層 用類來傳遞資料,需要 第一種實體類的寫法。

使用PHP建立實體類的一個認識誤區

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.