答案 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());
}
}