你能像在 JavaScript 中那样传入 $this 变量以在“全局”空间中的函数中使用吗?我知道 $this 是用于类(class)的,但只是想知道。我试图避免使用“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 完成同样的事情。
最佳答案
PHP 与 JavaScript 有很大不同。 JS 是一种基于原型(prototype)的语言,而 PHP 是一种面向对象的语言。在 PHP 中,在类方法中注入(inject)不同的 $this
是没有意义的。
您可能正在寻找将不同的 $this
注入(inject)闭包(匿名函数)。使用即将推出的 PHP 5.4 版本可以实现这一点。请参阅object extension RFC .
(顺便说一句,您确实可以将 $this
注入(inject)到不是 instanceof self
的类中。但正如我已经说过的,这没有任何意义完全没有。)
关于PHP 将 $this 传递给类外的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7774444/