當基本語法未解析的解決方法
嘗試使用等號右側的表達式定義類別屬性時, PHP 引發錯誤。這是因為 PHP 只允許原始值作為類別常數和屬性的預設值。
要繞過此限制,我們可以使用兩步驟方法:
1。引入靜態常數數組
在類別中定義靜態數組$_types。該數組將保存所有可能的常數值。
<code class="php">static protected $_types = null;</code>
2.建立一個擷取常數值的方法
實作一個 getType() 方法,讓您可以按名稱擷取常數值。
<code class="php">static public function getType($type_name) { self::_init_types(); if (array_key_exists($type_name, self::$_types)) { return self::$_types[$type_name]; } else { throw new Exception("unknown type $type_name"); } } protected function _init_types() { if (!is_array(self::$_types)) { self::$_types = [ 'STRING_NONE' => 1 << 0, // ... include all constants 'STRING_HOSTS' => 1 << 6 ]; } }</code>
3.使用 getType() 初始化類別屬性
在建構函式中,您現在可以使用 getType() 方法初始化類別屬性。
<code class="php">function __construct($fString = null) { if (is_null($fString)) { $fString = self::getType('STRING_NONE') & self::getType('STRING_HOSTS'); } var_dump($fString); }</code>
透過利用此解決方法,您可以保留可讀性和未來的可擴展性,同時遵守 PHP 的語法限制。
範例:
<code class="php">$SDK = new SDK(SDK::getType('STRING_HOSTS'));</code>
以上是如何在 PHP 中使用表達式值定義類別屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!