remove regular Extension, have SimpleExtension take its place, optimise the event system based on SimpleExtension methods
This commit is contained in:
@ -824,6 +824,7 @@ $_event_count = 0;
|
||||
function send_event(Event $event) {
|
||||
global $_event_listeners, $_event_count;
|
||||
if(!isset($_event_listeners[get_class($event)])) return;
|
||||
$method_name = "on".str_replace("Event", "", get_class($event));
|
||||
|
||||
ctx_log_start(get_class($event));
|
||||
// SHIT: http://bugs.php.net/bug.php?id=35106
|
||||
@ -831,7 +832,7 @@ function send_event(Event $event) {
|
||||
ksort($my_event_listeners);
|
||||
foreach($my_event_listeners as $listener) {
|
||||
ctx_log_start(get_class($listener));
|
||||
$listener->receive_event($event);
|
||||
$listener->$method_name($event);
|
||||
ctx_log_endok();
|
||||
}
|
||||
$_event_count++;
|
||||
@ -1001,7 +1002,7 @@ function _load_extensions() {
|
||||
if($rclass->isAbstract()) {
|
||||
// don't do anything
|
||||
}
|
||||
elseif(is_subclass_of($class, "SimpleExtension")) {
|
||||
elseif(is_subclass_of($class, "Extension")) {
|
||||
$c = new $class();
|
||||
$c->i_am($c);
|
||||
$my_events = array();
|
||||
@ -1012,10 +1013,6 @@ function _load_extensions() {
|
||||
}
|
||||
add_event_listener($c, $c->get_priority(), $my_events);
|
||||
}
|
||||
elseif(is_subclass_of($class, "Extension")) {
|
||||
$c = new $class();
|
||||
add_event_listener($c, $c->get_priority(), $all_events);
|
||||
}
|
||||
}
|
||||
|
||||
if(COMPILE_ELS) {
|
||||
@ -1024,13 +1021,10 @@ function _load_extensions() {
|
||||
foreach(get_declared_classes() as $class) {
|
||||
$rclass = new ReflectionClass($class);
|
||||
if($rclass->isAbstract()) {}
|
||||
elseif(is_subclass_of($class, "SimpleExtension")) {
|
||||
elseif(is_subclass_of($class, "Extension")) {
|
||||
$p .= "\$$class = new $class(); ";
|
||||
$p .= "\${$class}->i_am(\$$class);\n";
|
||||
}
|
||||
elseif(is_subclass_of($class, "Extension")) {
|
||||
$p .= "\$$class = new $class();\n";
|
||||
}
|
||||
}
|
||||
|
||||
$p .= "\$_event_listeners = array(\n";
|
||||
|
Reference in New Issue
Block a user