PHP 类属性声明中允许的表达式
PHP 文档建议类中的属性声明可以使用常量值进行初始化,运行时除外信息。但是,某些数组和数学表达式初始化似乎会导致语法错误。
使用简单表达式进行初始化
根据文档,应接受简单表达式。在这里,我们检查数组和数学表达式的三种变体:
已接受:
<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>
第一个示例初始化具有数值的数组并被接受。然而,第二个和第三个例子使用数学表达式,都会导致语法错误。这表明该限制超出了数组语法,包括所有计算表达式。
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中文网其他相关文章!