Может ли кто-нибудь сказать мне, почему это не работает? Это просто грубый пример того, что я пытаюсь сделать где-то еще.
$stuff = array( 'key' => __DIR__ . 'value' );
Однако это вызывает ошибку:
PHP Parse error: syntax error, unexpected '.', expecting ')' in /var/www/.../testing.php on line 6
Кроме того, это работает:
$stuff = array( 'key' => "{__DIR__} value" );
Первая часть кода не работает, потому что это не постоянное выражение, поскольку вы пытаетесь объединить две строки. Первоначальные члены класса должны быть постоянными.
Из документации :
Инициализация [property] должна быть постоянным значением, то есть она должна быть способна быть оценена во время компиляции и не должна зависеть от информации о времени выполнения для оценки.
Вы не можете использовать оператор в инициализации свойств. Обходной путь заключается в использовании конструктора:
public function __construct() { $this->stuff = array( 'key' => __DIR__ . 'value' ); }
Из документа PHP:
Это объявление может включать инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть способна быть оценена во время компиляции и не должна зависеть от информации о времени выполнения для оценки.
Задайте значение $ stuff для вашего конструктора
function __construct() { $this->$stuff = array( 'key' => __DIR__ . 'value' ); }