php ReflectionClass

时间:2010-07-30 13:46:10

标签: php reflection class

3 个答案:

答案 0 :(得分:3)

  

但我不想要求   上课,这就是我使用的原因   反射

即使是反射,也需要知道它应该反映出来的是什么。 为什么不想包含/要求类定义?

答案 1 :(得分:2)

答案 2 :(得分:0)

这是解决我的问题的方法 我将require_once

的完整路径分开
public function register(&$name) {
try{
  $intercafe = new ReflectionClass('Handler');

  $fullPath = $name;
  $className = $name;

  $index = strrpos($name , "/");
  if($index != False){
    $className = substr($name ,$index + 1);
  }

  $requirePath = 'handlers/' . $fullPath . '.php';
  require_once ( $requirePath );
  $reflectionClass = new ReflectionClass($className);

  if(!$reflectionClass->isSubclassOf($intercafe)){
    //LOG ERROR
    error_log("Init-> Error ," + name + " is not a subclass of [net/Handler]");

    throw new InvalidArgumentException();
  }

  $handler  = $reflectionClass->newInstance();
  $type = $handler->getType();

  //LOG DEBUG
  syslog(LOG_DEBUG ,"Registering handler = " . $name . " TYPE = " . $type);

  $key = $type << 32;

  $this->table[$key] = $reflectionClass;
}catch(Exception $ee){
  error_log("Error while register class :" . $ee->getMessage());
}

}