PHP で複雑なデフォルト値を持つクラス プロパティを定義する方法

Susan Sarandon
リリース: 2024-10-20 13:47:02
オリジナル
290 人が閲覧しました

How to Define Class Properties with Complex Default Values in 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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!