Нельзя использовать конкатенацию при объявлении свойств класса по умолчанию в PHP?

При объявлении значений по умолчанию для свойств в классе PHP кажется, что вы не можете использовать конкатенацию. Для этого есть причина?

class Foo { public $property = __DIR__ . '/'; } 

Для версий PHP до 5.6

См. http://www.php.net/manual/en/language.oop5.properties.php

Они определяются с использованием одного из ключевых слов public, protected или private, за которым следует объявление нормальной переменной. Это объявление может включать инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть способна быть оценена во время компиляции и не должна зависеть от информации о времени выполнения для оценки.

Для более сложной инициализации используйте конструктор

 public function __construct() { $this->settings = __DIR__ . '/'; } 

PHP 5.6 и выше

Начиная с версии PHP 5.6, вы можете использовать конкатенацию при объявлении свойств класса по умолчанию в PHP. См. https://wiki.php.net/rfc/const_scalar_exprs .

Это позволяет местам, которые принимают только статические значения (объявления const, объявления свойств, аргументы функции и т. Д.), Также могут принимать статические выражения.

Ваша потребность делает все инициализацию в __constructor. Т.е. в php5. Или в $ this-> class_name () в старом php4.