在 PHP 中從空值建立預設物件

Subodh Poudel 2023年1月30日
  1. 在 PHP 中建立一個 stdClass() 物件
  2. 在 PHP 中將陣列型別轉換為物件
  3. 在 PHP 中從匿名類建立物件
在 PHP 中從空值建立預設物件

我們將介紹一些在 PHP 中建立物件的方法,以及解決 creating default object from empty value 錯誤的一些方法。

在 PHP 中建立一個 stdClass() 物件

當我們嘗試在不初始化物件的情況下分配物件的屬性時,將丟擲錯誤。錯誤會說從空值建立預設物件。該錯誤還取決於 php.ini 檔案中的配置。當錯誤在配置中被抑制時,這樣的指令碼就不會丟擲錯誤。改配置檔案來抑制錯誤來擺脫它不是更好。相反,我們可以建立一個 stdClass() 物件來消除錯誤。當我們在全域性名稱空間中將變數宣告為 stdClass() 的物件時,我們可以動態地為這些物件分配屬性。

例如,建立一個變數 $obj 並將其設定為 NULL。然後,使用 $obj 物件將 success 屬性設定為 false。在這種情況下,將丟擲錯誤,如輸出部分所示。這是因為 $obj 還沒有被初始化為一個物件。

示例程式碼:

$obj = NULL;
$obj->success = true;

輸出:

Warning: Creating default object from empty value

要消除錯誤,首先,將 $obj 變數分配給 stdClass() 的例項。接下來,使用 $objsuccess 屬性設定為 true。然後,使用 print_r() 函式列印 $obj 物件。最好使用 isset() 函式來檢查 $obj 是否已經存在。我們可以在輸出部分看到有關 $obj 的資訊。因此,我們可以通過建立 stdClass() 的物件來消除錯誤。

示例程式碼:

$obj = new stdClass();
$obj->success =true;
print_r($obj);

輸出:

stdClass Object ( [success] => 1 ) 

在 PHP 中將陣列型別轉換為物件

我們可以在陣列之前使用 object 關鍵字將陣列型別轉換為物件。這樣就可以建立物件了。然後,我們可以將屬性分配給物件。由於我們已經初始化了物件,因此在分配物件的屬性時不會丟擲錯誤。此方法還建立 stdClass() 類的物件。

例如,建立一個變數 $obj 並將其分配給 array() 函式。然後,在 array() 之前的括號中寫入 object 關鍵字。陣列已轉換為物件。然後,使用 $objtrue 值分配給 success 屬性。最後,使用 print_r() 函式列印物件。通過這種方式,我們可以建立一個型別轉換陣列的物件並擺脫錯誤。

示例程式碼:

$obj = (object)array();
$obj->success =true;
print_r($obj);

輸出:

stdClass Object ( [success] => 1 ) 

在 PHP 中從匿名類建立物件

我們可以從 PHP 中的匿名類建立一個物件併為其分配屬性。我們可以使用 new class 關鍵字來建立一個匿名類。我們可以像在泛型類中一樣設定屬性的值。由於屬性將有一個類,並且我們可以使用物件訪問它,因此不會丟擲錯誤。

例如,建立一個物件 $obj 使用 new class 關鍵字為該物件分配一個匿名類。然後建立一個 public 屬性 $success 並將值設定為 true。在類之外,使用 print_r() 函式列印物件。通過這種方式,我們可以從 PHP 中的匿名類建立一個物件並防止錯誤。

示例程式碼:

$obj = new class {
 public $success = true;
};
print_r($obj);

輸出:

class@anonymous Object ( [success] => 1 ) 
作者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

相關文章 - PHP Object