2013-11-19 2 views
1

Я вчера обнаружил странную проблему в своем классе - надеюсь, что вы знаете некоторые ответы. Рассмотрим такой класс:PHP Объявление переменной в классе, которая создана из другой переменной

class Person { 

public $height = 90; 
public $weight = $this->height * 0.8; 

} 

Этот класс возвращает ошибку «Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный T_VARIABLE» и, кажется, я не могу объявить переменную в классе, что сама переменная. Могу ли я установить «статические» значения в переменные в классе (я имею в виду статический, как прямо объявленный как строка или int, не статический, как «static $ var =« xyz »?) Почему это происходит?

Спасибо, Kalreg.

ответ

5

в настоящее время вы можете использовать только константные выражения при определении по умолчанию properties значения в PHP. это означает, что вы не можете использовать все, что будет оцениваться во время выполнения. Поскольку $this относится к динамическому значению экземпляра, то run- время, очевидно, и не может использоваться в таких определениях.

+0

thank u - i could not найти такой короткий и понятный ответ. +1 – Kalreg

0

свойства не могут иметь динамические значения в t он определит класс, но вы можете определить вес в методе __construct, если хотите:

class Person { 

    public $height = 90; 
    public $weight; 

    public function __construct() 
    { 
    $this->weight = $this->height * 0.8; 
    } 

} 
Смежные вопросы