PHP 5.3 回调函数里面怎么使用this

2013-08-23 20:31:19 +08:00
 suckli
貌似是无解啊,试了好多种办法都不行~
5078 次点击
所在节点    PHP
9 条回复
shiny
2013-08-23 20:46:02 +08:00
php5.3 不是有闭包吗,可以吗?
shiny
2013-08-23 20:48:13 +08:00
看花眼了,贴下代码看看?
bixuehujin
2013-08-23 21:11:15 +08:00
$self = $this;
$func = function() use ($self) {
//some stuff with $self
}

这样就好
clippit
2013-08-23 21:49:13 +08:00
PHP Changelog:

5.4.0 $this can be used in anonymous functions.
suckli
2013-08-24 00:11:03 +08:00
@bixuehujin 这样可以吗?

@clippit 这个我知道,但是我不能升级啊
clippit
2013-08-24 00:18:15 +08:00
@suckli 语言特性所限,应该没有什么办法吧…… @bixuehujin 的那种办法可能可以使用,但是最多只能访问到public的方法,protected和private肯定不行的
bombless
2013-08-24 22:29:22 +08:00
让类成员函数来返回闭包不就行了……爱干什么干什么。
suckli
2013-08-24 22:50:16 +08:00
@bombless 求例子
suckli
2013-08-24 22:55:48 +08:00
@bixuehujin
@clippit
试了一下,@bixuehujin 的方式的确靠谱
这里贴一个简单的例子
<?php
class B {
public function funca() {
$self = $this;
$b = function($arg1, $arg2) use($self) {
echo $arg1;
echo $arg2;
$self->funcb();
};
echo '123';
$b('arg1','arg2');
}

public function funcb() {
echo 'echo from b function';
$this->funcc();
}

private function funcc() {
echo 'echo from c function';
}
}
$test = new B;
$test->funca();
?>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/80025

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX