2015-07-01 2 views
4

Почему PHP не выдает ошибку в строке 7?Почему это разрешено в PHP?

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); 

Я всегда думал, что поля класса не могут начинаться с цифр. Но, похоже, это не так, если число находится в переменной.

+8

связаны: HTTP : //stackoverflow.com/q/10333016/3933332 – Rizier123

+4

Строка 7 кода в вопросе пустая btw – AD7six

+0

Я не верю, что даже она не запускается для выполнения строки 7 .... сначала срабатывает ошибка синтаксического анализа, когда выполняется синтаксический анализ/компиляция –

ответ

5

Я считаю, что это связано с динамической природой переменных PHP.

Если вы читали vardump из определенного свойства класса:

object(Test)#1 (1) { ["123"]=> string(4) "Test" } 

Вы можете увидеть его (индекс) строка, а не целое число, как вы ожидали, что это будет

+0

Так что за кулисами он преобразуется в строку? Это хорошо знать! –