ホームページ  >  記事  >  バックエンド開発  >  PHP クラスのプロパティ宣言で数式によって構文エラーが発生するのはなぜですか?

PHP クラスのプロパティ宣言で数式によって構文エラーが発生するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-29 19:11:02597ブラウズ

Why Do Mathematical Expressions Cause Syntax Errors in PHP Class Property Declarations?

PHP クラスのプロパティ宣言で使用できる式

PHP ドキュメントでは、クラス内のプロパティ宣言は実行時を除いて定数値で初期化できることが示唆されています情報。ただし、特定の配列と数式の初期化によって構文エラーが発生しているようです。

単純な式による初期化

ドキュメントに従って、単純な式は受け入れられるはずです。ここでは、配列と数式の 3 つのバリエーションを調べます:

  • 受け入れ済み:

    <code class="php">public $var = array(
      1 => 4,
      2 => 5,
    );</code>
  • 構文エラー:

    <code class="php">public $var = array(
      1 => 4,
      2 => (4+1),
    );</code>
  • 構文エラー:

    <code class="php">public $var = 4+1;</code>

最初の例では、数値を含む配列が受け入れられます。ただし、2 番目と 3 番目の例は数式を使用しているため、どちらも構文エラーが発生します。これは、制限が配列構文を超えてすべての計算式を含むことを示唆しています。

PHP 5.6 の定数スカラー式

前述の制限とは対照的に、PHP 5.6 では定数が導入されています。スカラー式。この新しい機能により、定数やプロパティの宣言など、静的な値が以前に必要とされていたコンテキストで、数値および文字列リテラルと定数を含むスカラー式が可能になります。

<code class="php">class C {
    const THREE = TWO + 1;
    const ONE_THIRD = ONE / self::THREE;
    const SENTENCE = 'The value of THREE is '.self::THREE;

    public function f($a = ONE + self::THREE) {
        return $a;
    }
}

echo (new C)->f()."\n"; echo C::SENTENCE;</code>

このコードは次のように出力します。

4 The value of THREE is 3

したがって、クラス プロパティの初期化に関する初期の制限は、PHP 5.6 以降のバージョンでは適用されなくなりました。

以上がPHP クラスのプロパティ宣言で数式によって構文エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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