使用匿名函數初始化屬性:為什麼以及如何?
如下面的程式碼片段所述,在類別聲明在 PHP 中觸發「解析錯誤:語法錯誤,意外的 T_FUNCTION」。然而,在建構函數中將函數指派給屬性是可能的,如第二個片段所示。
// Property initialization with anonymous function error
class AssignAnonFunction {
private $someFunc = function() {
echo "Will Not work";
};
}
// Property initialization in constructor
class AssignAnonFunctionInConstructor {
private $someFunc;
public function __construct() {
$this->someFunc = function() {
echo "Does Work";
};
}
}
無法直接使用匿名函式初始化屬性源自於 PHP 的實作。屬性必須使用編譯期間可計算的常數值進行初始化,而函數不符合此條件。
儘管有此限制,PHP 仍允許在建構函數中將函數指派給屬性。這是因為建構函式是在運行時執行的,允許動態賦值。
雖然此解決方法提供了靈活性,但缺乏使用匿名函數進行直接屬性初始化在某些情況下可能是一個缺點。它需要額外的程式碼,並且會影響程式碼的可讀性。
儘管 PHP 中這項設計決策的原因仍然有些推測,但可能的解釋包括實現此類功能的複雜性以及對其需求不足。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3