注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Copper peas ' Bolg

Keep On Moving...This Is My Life...

 
 
 

日志

 
 

【转】PHP _call函数 反射  

2011-06-03 00:34:57|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

代码网络收集

反射

class ClassOne {    
  function callClassOne()
  {       
   print "In Class One";    
  }
 }
 
 class ClassOneDelegator
 {    
    private $targets;    
       function __construct()
    {        
     $this->target [] = new ClassOne ();    
    }
   
    function __call($name, $args)
    {        
     foreach ( $this->target as $obj )
     {            
      $r = new ReflectionClass ( $obj );            
      if ($method = $r->getMethod ( $name ))
      {                
       if ($method->isPublic () && ! $method->isAbstract ())
       {                    
        return $method->invoke ( $obj, $args );                
       }            
      }       
      }    
     }
   }
$obj = new ClassOneDelegator ();
$obj->callClassOne ();

 

_call函数

class foo {
  function __call($name,$arguments) {
    print("Did you call me? I'm $name!");
  }
} $x = new foo();
$x->doStuff();
$x->fancy_stuff();

echo '<br>';

class Magic {
   function __call($name,$arguments) {
  if($name=='foo') {
     if(is_int($arguments[0]))
      $this->foo_for_int($arguments[0]);
     if(is_string($arguments[0]))
      $this->foo_for_string($arguments[0]);
  }
   }  
   private function foo_for_int($x) {
  print("oh an int!");
   }  
   private function foo_for_string($x) {
  print("oh a string!");
   }
}
$x = new Magic();
$x->foo(3);
$x->foo("3");

  评论这张
 
阅读(83)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018