2016-10-06 9 views
1

Я пытаюсь настроить PHP класс:PHP - Установить переменную класса из другой переменной класса в пределах одного класса?

class SomeClass { 
    private $tags = array(
     'gen1' => array('some string', 1), 
     'gen2' => array('some string', 2), 
     'gen3' => array('some string', 3), 
     'gen4' => array('some string', 4), 
     'gen5' => array('some string', 5), 
    ); 

    private $otherVar = $tags['gen1'][0]; 
} 

Но это бросает ошибку:

PHP Parse error: syntax error, unexpected '$tags'

переключения его на обычный ...

private $otherVar = $this->tags['gen1'][0]; 

возвращающую та же ошибка:

PHP Parse error: syntax error, unexpected '$this'

Но доступ к переменной внутри функции отлично:

private $otherVar; 

public function someFunct() { 
    $this->otherVar = $this->tags['gen1'][0]; 
} 

Как я могу использовать ранее определенную переменную класса, чтобы определить и инициализировать текущий, без дополнительной функции?

+2

надлежащим образ используют последний блок кода, он должен быть в состоянии оценить во время компиляции и не должен зависеть от времени выполнения, http://de2.php.net/manual/ ru/language.oop5.properties.php – Ghost

+1

Назначить в конструкторе. – shudder

+0

Хорошо, спасибо всем. – Birrel

ответ

3

Ближайший способ сделать то, что вы хотите, - поставить назначение в конструкторе. Например:

class SomeClass { 
    private $tags = array(
     'gen1' => array('some string', 1), 
     'gen2' => array('some string', 2), 
     'gen3' => array('some string', 3), 
     'gen4' => array('some string', 4), 
     'gen5' => array('some string', 5), 
    ); 

    private $otherVar; 

    function __construct() { 
     $this->otherVar = $this->tags['gen1'][0]; 
    } 

    function getOtherVar() { 
     return $this->otherVar; 
    } 
} 

$sc = new SomeClass(); 
echo $s->getOtherVar(); // echoes some string