ホームページ > バックエンド開発 > PHPチュートリアル > PHP で式の値を使用してクラス プロパティを定義する方法

PHP で式の値を使用してクラス プロパティを定義する方法

Mary-Kate Olsen
リリース: 2024-10-20 13:48:29
オリジナル
534 人が閲覧しました

How to Define Class Properties with Expression Values in PHP?

基本構文が解析されない場合の回避策

等号の右側の式を使用してクラス プロパティを定義しようとすると、 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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート