PHP传入$ this以在类外部运行

时间:2011-10-14 23:00:09

标签: php javascript this

你可以传入一个$ this变量来在“全局”空间中的函数中使用,就像在javascript中一样吗?我知道$这是为了课程,但只是想知道。我试图避免使用“global”关键字。

例如:

class Example{
  function __construct(){ }
  function test(){ echo 'something'; }
}

function outside(){ var_dump($this); $this->test(); }

$example = new Example();

call_user_func($example, 'outside', array('of parameters')); //Where I'm passing in an object to be used as $this for the function

在javascript中,我可以使用call方法并指定一个this变量用于函数。如果用PHP可以完成同样的事情,那只是好奇。

2 个答案:

答案 0 :(得分:3)

PHP与JavaScript非常不同。 JS是基于原型的语言,而PHP是面向对象的语言。在PHP中注入不同的$this在PHP中没有意义。

您可能正在寻找的是在闭包中注入不同的$this(匿名函数)。这可以使用即将推出的PHP版本5.4。请参阅object extension RFC

(顺便说一句,你确实可以将一个$this注入一个不是instanceof self的班级。但正如我已经说过的那样,这根本没有任何意义。)

答案 1 :(得分:0)

通常情况下,您只需将其作为参考传递:

class Example{
  function __construct(){ }
  function test(){ echo 'something'; }
}

function outside(&$obj){ var_dump($obj); $obj->test(); }

$example = new Example();

call_user_func_array('outside', array(&$example));

它会破坏私有和受保护变量的目的,能够从代码外部访问obj的“$ this”。 “$ this”,“self”和“parent”是他们正在使用的特定对象所独有的关键字。