首页 > 代码库 > PHP 利用闭包偷窥马对人类的想法

PHP 利用闭包偷窥马对人类的想法

 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!

 注:本人郑重声明,此比喻只为加深对该例子的理解,无诋毁人类之意。

PHP 利用闭包偷窥马对人类的想法