2016-10-06 9 views
1

Ich versuche, eine PHP-Klasse einzurichten:PHP - Setze Klassenvariable von einer anderen Klassenvariablen innerhalb derselben Klasse?

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]; 
} 

Aber dies führt den Fehler:

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

es zu den üblichen Schalt ...

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

kehrt die gleicher Fehler:

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

Aber die Variable Zugriff innerhalb einer Funktion ist in Ordnung:

private $otherVar; 

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

Wie kann ich das zuvor definierte Klassenvariable verwenden, um die aktuellen, ohne eine zusätzliche Funktion zu definieren und zu initialisieren?

+2

die richtige Art und Weise wird den letzten Codeblock verwendet wird, muss es in der Lage sein, bei der Kompilierung ausgewertet werden und darf nicht auf der Laufzeit ab, http://de2.php.net/manual/ de/language.oop5.properties.php – Ghost

+1

Zuweisen in Konstruktor. – shudder

+0

Gut genug, danke an alle. – Birrel

Antwort

3

Der beste Weg, um das zu tun, was Sie wollen, ist, die Zuweisung in den Konstruktor zu stellen. Zum Beispiel:

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 
Verwandte Themen