基本構文が解析されない場合の回避策
等号の右側の式を使用してクラス プロパティを定義しようとすると、 PHP ではエラーが発生します。これは、PHP ではクラス定数とプロパティのデフォルト値としてプリミティブ値のみが許可されているためです。
この制限を回避するには、2 段階のアプローチを使用できます:
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 中国語 Web サイトの他の関連記事を参照してください。