首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将$this传递给类外部的函数

将$this传递给类外部的函数
EN

Stack Overflow用户
提问于 2011-10-15 07:00:09
回答 2查看 979关注 0票数 0

你能像在javascript中一样,在“全局”空间中传递一个$this变量来在函数中使用吗?我知道$this是为课程设计的,但我只是想知道。我尽量避免使用"global“关键字。

例如:

代码语言:javascript
复制
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来完成。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-15 07:04:40

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

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

(顺便说一句,您确实可以向非instanceof self的类中注入$this。但正如我已经说过的,这完全没有意义。)

票数 3
EN

Stack Overflow用户

发布于 2011-10-15 07:14:26

通常,您只需将其作为引用进行传递:

代码语言:javascript
复制
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“是使用它们的特定对象所独有的关键字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7774444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档