2016-04-14 9 views
1

私はルートをコントローラとそれぞれのメソッドにルーティングするためにフレームワークを使用していますが、コンストラクタ内でクラスを初期化する方法はわかりません。同じクラスの静的メンバーを介してこれにアクセスします。PHP - クラスのコンストラクタ内でのオブジェクトのインスタンスの初期化、静的メンバー内でのアクセス

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(); 

    } 

} 

答えて

1

コントローラを最初に初期化する必要があります。あなたは、私は、私は、コントローラのメソッドへのルートを使用してではなく、それをこのように初期化していますフレームワークとしてこれを行うことができると思うしないでください、その後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

Testのインスタンスを置くそれはこのためnew Controller();を呼び出すことができます。 App :: route( '/'、array( '\ Prj \ Controller'、 'Index'));静的メソッド内でクラス自体を呼び出すことによってコンストラクタのプロパティにアクセスする唯一のメソッドはありますか? – mhvvzmak1

+0

もし私が正しいのであれば、あなたはルートの中でコントローラから 'Index'メソッドを呼び出していますか?そうすればうまくいくはずです。 – Daan

+0

はい、申し訳ありませんが、私のコメント – mhvvzmak1

関連する問題