http://php.net/manual/en/language.oop5.properties.php показывает следующий пример, который не подходит для меня.
class SimpleClass{ private $var3 = 1+2; }
Parse error: syntax error, unexpected '+', expecting ',' or ';'....
Любые идеи почему?
версия php 5.4.9
В документации никогда не говорится, что это допустимое объявление свойства. В нем конкретно указывается его недопустимый пример.
прямо из вашей ссылки
<?php class SimpleClass { // invalid property declarations: public $var1 = 'hello ' . 'world'; public $var2 = <<<EOD hello world EOD; public $var3 = 1+2; public $var4 = self::myStaticMethod(); public $var5 = $myVar; // valid property declarations: public $var6 = myConstant; public $var7 = array(true, false); // This is allowed only in PHP 5.3.0 and later. public $var8 = <<<'EOD' hello world EOD; } ?>
это как раз то, как синтаксис языка определен для PHP.
Добавление значения по умолчанию для свойства должно выполняться внутри конструктора. Чтобы добавить значения по умолчанию при объявлении свойства, это просто не-OO-вещь, которая работает на PHP, чтобы сделать жизнь для разработчиков более простой, но, как вы можете видеть, она еще не поддерживается очень хорошо.
Решение:
class Foo { private $var; public function __construct() { $this->var = 2 + 3 } }
PHP не поддерживает вычисляемые значения, хотя оба значения технически могут быть известны во время компиляции.
Просто потому, что вы не можете в PHP. Вы не можете оценивать присвоения свойств наряду с объявлениями в PHP. Не уверен, почему это было реализовано таким образом.