Привет всем, я хочу использовать ReflectionClass для загрузки некоторых классов
определено в моем XML-файле
но я получаю ошибку
Error while register class :Class ReportErrorHandler does not exist
я не получу эту ошибку, когда буду использовать
require_once( 'handlers/system/ReportErrorHandler.php' );
но я не хочу требовать класса, вот почему я использую отражение
и в моем XML-файле я пишу только имя класса
без полного пути, поэтому я не могу динамически 'require_once'
вот мой код
public function init(){
$doc = new DOMDocument();
$doc->load( 'server.xml' );
$handlers = $doc->getElementsByTagName( "handler" );
foreach( $handlers as $handler ) {
$this->register($handler->nodeValue);
}
}
public function register(&$name) {
try{
$intercafe = new ReflectionClass('Handler');
$reflectionClass = new ReflectionClass($name);
if(!$reflectionClass->isSubclassOf($intercafe)){
//LOG ERROR
error_log("Init-> Error ," + name + " is not a subclass of [net/Handler]");
throw new InvalidArgumentException();
}
error_log("register: " . $reflectionClass);
$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());
}
}
мой xml файл
<?xml version="1.0" encoding="UTF-8"?>
<server>
<server-version>0.1</server-version>
<handlers>
<handler>AuthenticateHandler</handler>
<handler>ReportErrorHandler</handler>
<handler>DisconnectedHandler</handler>
<handler>NoSuchRequestHandler</handler>
</handlers>
</server>