/** * Преобразуем строку действия в реальный callback * * @param string $action * @return Callback */ public function parseAction($action) { if (preg_match('#^(\\w+)\\((.+)\\)$#', $action, $matches)) { $action = $matches[1]; $matches[2] = str_replace(' ', '', $matches[2]); $args = explode(',', $matches[2]); $callback = new Callback(array($this->image, $action)); $callback->setArgs($args); return $callback; } return NULL; }
/** * Register hooks for event * * @param string $event * @param callback $callback */ public function hook($event, $callback, $position = NULL) { $args = func_get_args(); $this->events->{$event} or $this->events->{$event} = new Event(); $args = array_slice($args, 3); $callback = new Callback($callback); $callback->setArgs($args); if ($position !== NULL) { $this->events->{$event}->inject($callback, $position); } else { $this->events->{$event}->append($callback); } }