2017-04-10 32 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中工作,但不是在我的簡單腳本?

伊夫已經一派,如此搜查..

+2

問自己這個問題:什麼樣的對象應該'$ this'解析爲您的第一個代碼示例? – arkascha

+4

不能在類上下文中使用$ this –

+1

要清除前面的註釋,'$ this'引用一個實例化對象,並且只能在該對象內使用。或者換句話說,'$ this'是當前對象的縮寫。在你的第一個例子中,'$ this'在你的類上下文之外,並且你還沒有創建一個load類的實例。 – WillardSolutions

回答

0

在你的代碼使用$此不是一類。所以它確實不是一個對象。

在使用它之前,您應該創建類的對象。

或者,如果你想在其他類中使用它,只是做這樣的事情:

class PreLoad 
{ 
    public load; 

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

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

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