你能像在javascript中一样,在“全局”空间中传递一个$this变量来在函数中使用吗?我知道$this是为课程设计的,但我只是想知道。我尽量避免使用"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来完成。
发布于 2011-10-15 07:04:40
PHP与JavaScript有很大的不同。JS是基于原型的语言,而PHP是面向对象的语言。在类方法中注入不同的$this在PHP中是没有意义的。
您可能正在寻找的是将不同的$this注入到闭包(匿名函数)中。使用即将发布的PHP版本5.4可以做到这一点。请参阅object extension RFC。
(顺便说一句,您确实可以向非instanceof self的类中注入$this。但正如我已经说过的,这完全没有意义。)
发布于 2011-10-15 07:14:26
通常,您只需将其作为引用进行传递:
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“,那就有点违背了私有和受保护的var的目的。"$this“、"self”和"parent“是使用它们的特定对象所独有的关键字。
https://stackoverflow.com/questions/7774444
复制相似问题