1 <?php 2 3 /** 4 * reference:http://www.php.net/manual/en/reflectionmethod.getclosure.php 5 * Learn this and you will know How to peer through what a horse is thinking! 6 * 7 * Class Client 8 */ 9 class People 10 { 11 private $heartWords = "How beautiful the horse is!I want to ride it!"; 12 13 public function hook() 14 { 15 $who = get_class($this); 16 echo ucfirst($who). " says :".$this->heartWords. "\n"; 17 } 18 19 public function peer() 20 { 21 return function(){ 22 $this->hook(); 23 }; 24 } 25 } 26 27 class Horse 28 { 29 private $heartWords = "How silly the guy is! A big ass!"; 30 } 31 32 $people = new People(); 33 $horse = new Horse(); 34 35 try{ 36 $reflection = new ReflectionClass(get_class($people)); 37 } 38 catch(ReflectionException $e) 39 { 40 echo $e->getMessage() ."\n"; 41 return; 42 } 43 44 $closure = $reflection->getMethod(‘hook‘)->getClosure($people); 45 $truth = $closure->bindTo($horse,$horse); 46 47 $truth(); // Horse says :How silly the guy is! A big ass!
注:本人郑重声明,此比喻只为加深对该例子的理解,无诋毁人类之意。
时间: 2024-10-13 00:00:57