基本語法未解析的解決方法
在定義具有複雜預設值的類別屬性時,PHP 嚴格的語法規則可能是一個障礙。雖然 (1
了解PHP 的類別宣告限制
在PHP 中,類別常數或屬性的預設值必須是原始值,例如:
const ABC = 8; static $GHI = 15;
此限制源自於聲明性語句不應產生副作用的原則。
建立使用者定義型別並使用表達式初始化
為了克服此限制,我們可以建立使用者定義型別並使用類別宣告以外的表達式初始化它們:
class SDK { // Example of self-created type static private $STRING_NONE = 1 << 0; } $fString = SDK::$STRING_NONE;
重建原始類別
將此解決方法應用於原始類別範例:
class SDK { static private $_types = null; static public function getType($type_name) { self::_init_types(); return self::$_types[$type_name]; } static private function _init_types() { if (!is_array(self::$_types)) { self::$_types = array( 'STRING_NONE' => 1 << 0, // ... rest of types here ); } } function __construct($fString = null) { if (is_null($fString)) { $fString = self::getType('STRING_NONE') & self::getType('STRING_HOSTS'); } } } $SDK =& new SDK(SDK::getType('STRING_HOSTS'));
這種方法允許我們在原始類別中其中定義和使用類型類,同時容納表達式結果的預設值。
以上是如何在 PHP 中定義具有複雜預設值的類別屬性的詳細內容。更多資訊請關注PHP中文網其他相關文章!