ホームページ >バックエンド開発 >PHPチュートリアル >PHP で複雑なデフォルト値を持つクラス プロパティを定義する方法
基本構文が解析されない場合の回避策
複雑なデフォルト値を持つクラス プロパティを定義する場合、PHP の厳密な構文規則が障害となる場合があります。 (1 << 0) のような構文は簡単に見えるかもしれませんが、PHP ではこれをクラス宣言の有効なデフォルト値ではなく、副作用のある式とみなします。
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 中国語 Web サイトの他の関連記事を参照してください。