手册中 Closure::bind — 复制一个闭包,绑定指定的$this对象和类作用域。
具体参数可以看手册,这里记录下这个方法的实际用处.
1 methods[$methodName] = Closure::bind($methodCallable, $this, get_called_class());14 15 }16 17 public function __call($methodName, array $args)18 {19 if (isset($this->methods[$methodName])){20 return call_user_func_array($this->methods[$methodName],$args);21 }22 23 throw new RuntimeException('There is no method with the given name to call');24 25 }26 27 }28 29 class HackThursday30 {31 use MetaTrait;32 33 private $dayOfWeek = 'Thursday';34 }35 36 37 $test = new HackThursday();38 $test->addMethod('when',function(){39 return $this->dayOfWeek;40 });41 42 echo $test->when(); //Thursday
其实这个方法就是以前说过的 的静态版本, 和这篇一起看加深理解.