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

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

Mary-Kate Olsen
リリース: 2024-10-25 17:26:44
オリジナル
704 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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