2013-07-29 2 views
0

Я пытаюсь назначить результат статического метода статической переменной в PHP, но всегда получаю ошибку.Назначение статического метода для статической переменной-члена в php

Анализировать ошибка: синтаксическая ошибка, неожиданный T_FUNCTION в ./MyClass.php на линии 8

class MyClass 
{ 
    public static function myMethod() 
    { 
     return array('a' => 'b'); //some array 
    } 

    public static $myarr = self::myMethod(); 
} 

Я также попытался ...

class MyClass 
{ 
    public static $myarr = call_user_func(function 
     { 
      return array('a' => 'b'); //some array 
     } 
    ); 
} 

... но я получаю та же ошибка в строке 3. Я прошел через это несколько раз, и я не вижу никаких опечаток, поэтому я не уверен, что я делаю неправильно. Есть идеи?

+2

это не должно быть государственной статической функции MyMethod() –

+0

Да, но это не было проблемой. Typo в этом форуме, а не мой класс, я его отредактировал. Марк Бейкер ударил ногой по голове ниже. – Clandestine

ответ

4

Вы не можете присвоить значение статической переменной, вызвав функцию во время объявления.

Цитируя manual (курсив мой):

They are defined by using one of the keywords public, protected, or private, followed by a normal variable declaration. 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

Бинго! Благодарю. Если бы я мог дать вам один голос, вы бы подняли голос. – Clandestine

1

Изменение:

public static myMethod() 

To:

public static function myMethod() 
Смежные вопросы