为什么在PHP中允许这样做?

TMH*_*TMH 4 php

为什么PHP不在第7行抛出错误?

https://ideone.com/DHMLCY

<?php

class Test {
    public function __construct(){

        $name = 123;
        $this->$name = 'Test';
        var_dump($this->$name);


        $this->123 = 'Test2';
        var_dump($this->123);

    }
}

$test = new Test();
var_dump($test);
Run Code Online (Sandbox Code Playgroud)

我一直认为,课堂领域不能以数字开头.但如果数字在一个变量中,那似乎并非如此.

Joh*_*ldo 5

我相信这是因为PHP变量的动态特性.

如果您读取已定义的类属性的vardump:

 object(Test)#1 (1) { ["123"]=> string(4) "Test" }
Run Code Online (Sandbox Code Playgroud)

您可以看到它(索引是)一个字符串,而不是您期望的整数