![]() | 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 ![]() @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(); ?> |