2016-04-14 7 views
1

Ich benutze ein Framework, um meine Routen zu Controllern und ihren jeweiligen Methoden zu routen, aber ich bin mir nicht sicher, wie Klassen innerhalb des Konstruktors initialisiert werden dann greifen Sie auf dieses über ein statisches Mitglied der gleichen Klasse zu.PHP - Initialisiere Instanz eines Objekts innerhalb eines Konstruktors einer Klasse, Zugriff innerhalb eines statischen Members

class Controller { 

    static private $test = null; 

    private function __construct(){ 

     #$this->test = new Test(); 
     self::$test = new Test(); 

    } 

    public static function Index(){ 

     // rather than this 
     #$test = new Test(); 
     #echo $test->greet(); 

     // something like this 
     #echo self::$test->greet(); 

    } 

} 

Antwort

1

Zuerst müssen Sie den Controller initialisieren. Sie können new Controller(); dafür nennen, die dann eine Instanz von Test setzen in private $test

<?php 
Class Test { 

    public function greet(){ 
     return "hello world"; 
    } 

} 

class Controller { 

    static private $test = null; 

    private function __construct(){ 

     self::$test = new Test(); 

    } 

    public static function Index(){ 

     new Controller(); 
     echo self::$test->greet(); 

    } 

} 

Controller::Index(); //Returns hello world 
+0

Ich glaube nicht, ich bin in der Lage dies als Rahmen zu tun, die ich Strecken eher ein Verfahren bin mit der Steuerung als es auf diese Weise zu initialisieren . App :: route ('/', Array ('\ Prj \ Controller', 'Index')); Ist die einzige Methode, auf die Konstruktoreigenschaften zuzugreifen, indem die Klasse selbst innerhalb der statischen Methode aufgerufen wird? – mhvvzmak1

+0

Wenn ich richtig bin, rufen Sie die "Index" -Methode vom Controller in der Route? Dann sollte es funktionieren. – Daan

+0

Ja, tut mir leid, ich habe meinen Kommentar aktualisiert – mhvvzmak1