2015-01-12 2 views
-1

Я хочу, чтобы построить новый массив с использованием значений, возвращаемых из статического метода из другого класса, например, так:PHP Ошибка при возврате значения в новый массив

class Foo { 
    public static $vars = array(
     'foo' => Config::method('returns a string'), /* line where error occurs */ 
     'bar' => Config::anothermethod('another string') 
    ); 
} 

Теперь PHP выдает эту ошибку:

Parse error: syntax error, unexpected '(', expecting ')' in file.php on line 22

Метод просто возвращает строку, которую я дважды проверял. Я даже попробовал подстроить его с помощью (string) Config::method('foo'), без успеха. Разве это невозможно?

+0

Могу ли я спросить, что причиной downvote был? –

+0

Вопросы, как правило, включают весь код, необходимый для воспроизведения проблемы. В вашем вопросе нет очереди для очереди. Тем не менее, я не тот человек, который ниспроверг вас. – castis

ответ

3

Объявление переменных класса должно быть постоянным выражением. Вызов метода не является постоянным выражением.

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

This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

+0

Это делает вещи более ясными, спасибо. Я все еще пытаюсь найти свой путь в ООП. –

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