在 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()
的例項。接下來,使用 $obj
將 success
屬性設定為 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
關鍵字。陣列已轉換為物件。然後,使用 $obj
將 true
值分配給 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 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