$someClass sc=new SomeClass();
我想知道的是,如果構造函數由於某種原因失敗(如可能沒有足夠的內存),變量sc中將會出現什麼內容。我找不到直接的答案?在Php中,當一個對象無法實例化時會發生什麼?
$someClass sc=new SomeClass();
我想知道的是,如果構造函數由於某種原因失敗(如可能沒有足夠的內存),變量sc中將會出現什麼內容。我找不到直接的答案?在Php中,當一個對象無法實例化時會發生什麼?
構造函數可以失敗主要有兩個原因:
缺貨的存儲器;不是唯一的對象,這會導致致命的錯誤,您的腳本不會繼續。
exception被拋出;除非使用'try-catch'子句捕獲異常,否則腳本將停止。
try { $sc = new SomeClass(); // exception is thrown inside the constructor } catch (Exception $e) { echo "Yikes, object didn't get created; error = {$e->getMessage()}\n"; }
請注意'try ... catch'不會捕獲致命錯誤,除非您使用PHP 7並捕獲'Throwable'類錯誤。 – Narayon
隨着你的內存問題的例子,你會得到一個致命的錯誤和PHP停止執行。你永遠不會得到變數$ sc的分配。
首先,對象啓動的語法不正確,需要爲$sc = new SomeClass();
而且您將得到內存耗盡錯誤,並且不會創建變量$sc
。
當任何其他類型的代碼出於某種原因(比如沒有足夠的內存等)而發生同樣的事情時:PHP運行時發出致命錯誤,就是這樣。對象構造函數並不特殊。
沒什麼,整個腳本將失敗。另外請注意,這不是你如何在PHP中聲明變量。 –