2017-04-10 33 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();