2017-04-10 7 views
0

$ thisの周りに頭を包んでいるようです!

私はビューをロードするcodeigniter関数をエミュレートしようとしていますが、明らかに何か不足しています。

class Load{ 

    public function __construct(){ 

    } 

    public function view(){ 
     echo "Hello"; 
    } 

    public function files(){ 

    } 

    public function plugins(){ 

    } 

} 


$this->load->view(); 

私が使用している場合にただし、次の

Fatal error: Using $this when not in object context

をスロー:

$load = new Load; 
$load->view(); 

私が予想される応答を取得します。こんにちは

私はCodeigniterで動作しますが、私の単純なスクリプトでは動作しません。あなたのコードでアイブ氏はすでにグーグルとSO検索

..

+2

は自分自身にこの質問をする: '$あなたの最初のコード例ではに解決this'べきオブジェクトを? – arkascha

+4

$ thisをクラスコンテキストで使用することはできません –

+1

前のコメントをクリアするには、 '$ this'はインスタンス化されたオブジェクトを参照し、そのオブジェクト内でのみ使用できます。あるいは、これとは異なって、 '$ this'は現在のオブジェクトの省略形です。最初の例では、 '$ this'はクラスコンテキストの外にあり、ロードクラスのインスタンスを作成していません。 – WillardSolutions

答えて

0

あなたがいないクラスで$このを使用しています。だからそれは本当に目的ではありません。

クラスを使用する前にオブジェクトを作成する必要があります。

それとも、他のクラスでそれを使用したい場合は、単にそのような何か:

class PreLoad 
{ 
    public load; 

    public function __construct() 
    { 
     $this->load = new Load(); 
    } 

    public function show() 
    { 
     $this->load->view(); 
    } 
} 

(new PreLoad())->show();