在PHP 中將匿名函數指派給類別屬性
在PHP 中,無法直接將類別屬性初始化為匿名函數:宣告它。下面的程式碼片段:
<code class="php">class AssignAnonFunction { private $someFunc = function() { echo "Will Not work"; }; }</code>
產生錯誤訊息「解析錯誤:語法錯誤,意外的 T_FUNCTION。」這是因為 PHP 語言不允許在宣告階段用函數初始化屬性。
常數初始化限制
根據 PHP 手冊,類別屬性只能在宣告期間以常數值初始化。常數值是可以在編譯時計算而不依賴執行時資訊的值。但是,函數不符合此標準,因此在聲明期間不允許作為屬性初始值設定項。
使用建構函式的解法
儘管無法使用匿名函式初始化屬性在宣告期間,可以將函式指派給建構函式方法中的屬性。將前面的程式碼修改為以下內容可以進行賦值:
<code class="php">class AssignAnonFunctionInConstructor { private $someFunc; public function __construct() { $this->someFunc = function() { echo "Does Work"; }; } }</code>
在建立物件時呼叫建構函式方法,從而允許在執行時將匿名函式指派給屬性。
以上是如何在 PHP 中將匿名函數指派給類別屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!