當您存取看似未設定的屬性時,通常會出現PHP 的「從空值建立預設物件”錯誤多變的。此錯誤是 PHP 5.4 及更高版本中嚴格錯誤處理的結果。
當 PHP 嘗試為還不是物件或明確設定為 NULL 的變數初始化預設物件時,會觸發此錯誤。例如:
$res = NULL; $res->success = false;
在 PHP 5.3 及更早版本中,此程式碼不會產生任何錯誤。但是,在 PHP 5.4 及更高版本中,啟用了 E_STRICT 警告(如果您將 error_reporting 設定為至少此級別,則啟用 E_WARNING),從而導致「從空值建立預設物件」錯誤。
$res 需要先聲明嗎?
不,將 $res 宣告為物件是沒有必要。但是,在存取其屬性之前,必須確保 $res 是一個物件。為此,您可以將其初始化為特定類別的對象,也可以使用通用stdClass 物件:
// Initialize as a specific class $res = new MyClassName(); // Initialize as a generic object $res = new \stdClass();
一旦$res 是一個對象,您就可以存取和修改其屬性,而無需遇到“從空值建立預設物件”錯誤。
$res->success = false; // No error
以上是為什麼 PHP 會拋出「從空值建立預設物件」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!