你可以传入一个$ 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可以完成同样的事情,那只是好奇。
答案 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”是他们正在使用的特定对象所独有的关键字。