gpt4 book ai didi

php - 为什么我可以在 php7 中使用字符串文字作为类?

转载 作者:可可西里 更新时间:2023-10-31 23:58:11 24 4
gpt4 key购买 nike

考虑以下代码:

class foo {
static $bar = 'baz';
}
var_dump('foo'::$bar);

它在 PHP5 中抛出一个错误(如预期的那样):

Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in [...][...] on line 4


但它在 PHP7 中没有问题并输出:

string(3) "baz"

这是故意的还是错误?

最佳答案

我认为这是因为他们重写了有关评估的内容。

像下面这样在 PHP5 中是不可能的,但在 PHP 7 中是不可能的:

echo (new X)->toString();

同样适用

echo ('X')::$bar

参见 Changes to the handling of indirect variables, properties, and methods

这主要是关于从左到右的评估,但它也会影响一般的评估。

更多信息可以在 PHP RFC: Uniform Variable Syntax 上找到(状态:已实现)- 感谢 Nikic :

This RFC proposes the introduction of an internally consistent and complete variable syntax. To achieve this goal the semantics of some rarely used variable-variable constructions need to be changed.

关于php - 为什么我可以在 php7 中使用字符串文字作为类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38468161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com