2013-06-28 32 views
1

我不断收到此错误PHP致命错误:使用$ this而不是在对象上下文中我无法为我的生活找出原因。是否有另一组眼睛可以提供帮助?我有另外一个班级设置类似,并没有抛出错误。代码如下(为了便于阅读,向下撇取):

include '< const class id >.php'; 
class ParseFunctions { 
    private $_id = ''; 

    public function __construct(){ 
     $id = new IDS; 
     $this->_id = $id::<const class id>; 
    } 

    public function set_id(){ 
     $new_id = $this->id; <--- this line throws the error 
     $print_r($new_id); 
    } 
} 

任何帮助表示赞赏!谢谢!

+2

'$ this-> id'不存在。它应该是'$ this - > _ id'吗? – 2013-06-28 23:07:13

+1

与此问题无关,但这是一个奇怪的外观,因为您没有传递参数。你能告诉你如何调用'set_id()'吗?如果你试图在静态上下文中调用,那会导致这个错误。 –

+0

id/_id的东西不应该导致这个错误。 说实话,这个错误的本质是这样的,除非我们看到set_id()被调用,否则很难提供帮助。我的猜测是你在某处静态地调用set_id(例如:: set_id()而不是 - > set_id()) –

回答

0

这是因为您正在调用set_id静态方法(沿着ParseFunctions::set_id()的行)。

在该(静态)上下文中不能使用$this。您只能使用一个实例中$this(对象上下文),即$obj = new ParseFunctions; $obj->set_id();(达到相关的线时没有上下文错误将被抛出)

+0

你是对的!谢谢您的回答!! – vanloren1377d

0

你们虽然没有展示了如何在你的代码中调用set_id()。可能的错误是,你在静态情况下的地方调用它是这样的:

ParseFunctions::set_id() 

的是静态的上下文和将不允许使用$this调用的方法中,因为他们是已被实例化没有具体的对象。

+0

谢谢你的回答!你指出我正确的方向! – vanloren1377d

相关问题