1
shiny 2013-08-23 20:46:02 +08:00
php5.3 不是有闭包吗,可以吗?
|
2
shiny 2013-08-23 20:48:13 +08:00
看花眼了,贴下代码看看?
|
3
bixuehujin 2013-08-23 21:11:15 +08:00
$self = $this;
$func = function() use ($self) { //some stuff with $self } 这样就好 |
4
clippit 2013-08-23 21:49:13 +08:00
PHP Changelog:
5.4.0 $this can be used in anonymous functions. |
5
suckli OP |
6
clippit 2013-08-24 00:18:15 +08:00 1
@suckli 语言特性所限,应该没有什么办法吧…… @bixuehujin 的那种办法可能可以使用,但是最多只能访问到public的方法,protected和private肯定不行的
|
7
bombless 2013-08-24 22:29:22 +08:00
让类成员函数来返回闭包不就行了……爱干什么干什么。
|
9
suckli OP @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(); ?> |