首頁  >  文章  >  後端開發  >  如何建立未定義類別PHP對象

如何建立未定義類別PHP對象

醉折花枝作酒筹
醉折花枝作酒筹轉載
2021-06-25 16:14:031590瀏覽

在PHP中,如果沒有事先準備好類,需要建立一個未定義類別的對象,我們可以採用下面三種方式:1、「new stdClass()」、「new class{}(object)」和「(object)[]」。以下將由小編來詳細介紹。

如何建立未定義類別PHP對象

在PHP中,如果沒有事先準備好類,需要建立一個未定義類別的對象,我們可以採用下面三種方式:

  • #new stdClass()

  • new 類{}

  • #(object)[]

##首先是stdClass,這個類別是一個空的類別模板,是PHP的內部保留關鍵字及類別名稱。可以把它相像成是Java中的Object基類,在Java中,所有類別都自然繼承自Object基類。而PHP中的這個stdClass則是完全的一個空的類別模板。你自己新創建的類別並不是它的子類別。但是用這個類別模板​​可以建立一個自己未定義類別的物件。當然,這個物件內部沒有任何東西。

 $a = new stdClass();
var_dump($a);

new class{}呢?做過一段時間開發,接觸過前端js和其他動態語言的應該可以猜到,這個是匿名類別。一般在參數物件中很常見。它創建出來的物件是可以帶屬性方法的。

 $b = new class{
    public $p = 1;
};
var_dump($b);

最後我們來看到的是使用陣列強轉成物件的形式來產生一個物件。

 $c = (object)[
    'p' => 1
];
var_dump($c);

很明顯,數組強轉的形式產生的物件和第一種物件是一個類型的,而且它可以帶屬性也可以不帶。但是,它不能帶方法。

陣列強轉方式產生的物件非常的直覺好理解。如果只是屬性物件的封裝,使用這種方式會更優雅舒服。複雜的物件產生可以使用匿名類別的方式進行產生。而一些只需要佔位的對象,可以使用stdClass的方法,當然用空數組的方式也很方便。

要注意的是,陣列強轉需要遵守型別轉換的規則。例如數字下標的問題。

在日常開發中,我們對於一些介面或資料庫ORM框架的使用中會常用這些功能。例如一些ORM框架的插入、修改需要傳入的是只包含屬性的物件。這時候就可以使用上述的方法靈活地產生物件而不用完整的定義類別模板了。

測試程式碼: 

https://github.com/zhangyue0503/dev-blog/blob/master/php/201910/source/%E4%BC%98%E9%9B%85%E5%9C%B0%E5%88%9B%E5%BB%BA%E6%9C%AA%E5%AE%9A%E4%B9%89PHP%E5%AF%B9%E8%B1%A1.php

推薦學習:

php影片教學

以上是如何建立未定義類別PHP對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除