2017-04-22 15 views
0

を動作するようですしないPHPのコンストラクタは、私はこのクラスを持っている

Fatal error: Call to a member function rawQuery() on a non-object in {dir/to/my/file} on line 50 

ライン50はreturn $this->_db->rawQuery("SHOW COLUMNS FROM rank LIKE 'view_template'");

です

コードを__constructからgetに移動するとうまくいきます。

class template { 

    private $_db; 

    public function get(){ 

     $this->_db = \MysqliDb::getInstance(); 
     return $this->_db->rawQuery("SHOW COLUMNS FROM rank LIKE 'view_template'"); 
    } 
} 

この場合、何が間違っていますか?

+1

'template'クラスをインスタンス化するときにインスタンスが実際には利用できないように聞こえますが、後でgetを呼び出すとインスタンスが呼び出されます。 – alzee

+1

クラスをインスタンス化せずにメソッドを静的に呼び出すと、get()メソッドの呼び出し方法が表示されます。 – Mikhail

+0

@alzee @Mikhailありがとうございます。クラステンプレートを初期化してから、クラスMysqlidbを実行してから、 'get'メソッドを実行して、利用可能な時点で完全に正しいものになり、問題はクラスとメソッドを呼び出す方法に関連していました。 – thingNumber2

答えて

1

私はMysqliDb \

を考える::のgetInstance()

。構造体が呼び出された時点で有効なオブジェクトが返されていないため、エラーが発生しています。

あなたは、オブジェクトが有効なオブジェクトが

パブリック関数の__construct(){$このgetメソッドを呼び出す前に返されたかどうかを確認するために構築物に戻っチェックすることができ - (> _デシベル= \ MysqliDb ::のgetInstance ); var_dump($ this - > _ db); }

+0

問題を直接解決することはできませんでしたが、あなたはあなたの声明に完全に合っていました。 =) ありがとうと思います。 – thingNumber2

+1

ええ、私はそれが問題を解決しないことを知っていましたが、それはあなたが問題を識別するのに役立ちます、 – Tosin

関連する問題