ホームページ  >  記事  >  バックエンド開発  >  宣言時に PHP クラス プロパティを関数に初期化できないのはなぜですか?

宣言時に PHP クラス プロパティを関数に初期化できないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-25 17:26:44603ブラウズ

Why can't you initialize a PHP class property to a function at declaration time?

PHP プロパティを関数に初期化できないのはなぜですか?

宣言中に PHP クラス プロパティを関数に初期化しようとすると、「解析エラー」が発生します: 構文エラー、予期しない T_FUNCTION" エラーが発生する可能性があります。

<code class="php">class AssignAnonFunction {
    private $someFunc = function() {
        echo "Will Not work";
    };
}</code>

これは、PHP が関数などの非定数値でプロパティを初期化することを許可していないために発生します。 PHP マニュアルでは、次のように説明されています。

「プロパティは、キーワード public、protected、または private のいずれかを使用して定義され、その後に通常の変数宣言が続きます...この初期化は定数値である必要があります...コンパイル時に評価でき、評価するために実行時の情報に依存してはなりません。

したがって、関数を宣言時にプロパティに割り当てることはできません。

ただし、プロパティは、__construct() メソッドを使用する関数で初期化できます:

<code class="php">class AssignAnonFunctionInConstructor {
    private $someFunc;

    public function __construct() {
        $this->someFunc = function() {
            echo "Does Work";
        };
    }
}</code>

これが可能になるのは、__construct() メソッドが実行時に呼び出され、次のような動的な値の割り当てが可能になるためです。関数。

以上が宣言時に PHP クラス プロパティを関数に初期化できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。