Concatenando __DIR__ constante com uma string como um valor de matriz que é um membro da turma em PHP

Alguém pode me dizer por que isso não funciona? É apenas um exemplo grosseiro do que estou tentando fazer em outro lugar.

$stuff = array( 'key' => __DIR__ . 'value' ); 

No entanto, isso produz um erro:

 PHP Parse error: syntax error, unexpected '.', expecting ')' in /var/www/.../testing.php on line 6 

Além disso, isso funciona:

 $stuff = array( 'key' => "{__DIR__} value" ); 

O primeiro pedaço de código não funciona porque não é uma expressão constante, pois você está tentando concatenar duas cordas. Os membros da class inicial devem ser constantes.

Da documentação :

[propriedade] a boot deve ser um valor constante – isto é, ele deve ser capaz de ser avaliado em tempo de compilation e não deve depender de informações de tempo de execução para serem avaliadas.

Você não pode usar o operador em uma boot de propriedade. A solução alternativa é usar o construtor:

 public function __construct() { $this->stuff = array( 'key' => __DIR__ . 'value' ); } 

Do doc PHP:

Esta declaração pode include uma boot, mas essa boot deve ser um valor constante – isto é, deve ser capaz de ser avaliado em tempo de compilation e não deve depender de informações de tempo de execução para serem avaliadas.

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

Defina o valor $ stuff no seu construtor

 function __construct() { $this->$stuff = array( 'key' => __DIR__ . 'value' ); }