Как вы внедряете систему крючков в приложение PHP для изменения кода до или после его выполнения. Как будет базовая архитектура класса hookloader для PHP CMS (или даже простого приложения). Как тогда это можно было бы расширить до полного загрузчика плагинов / модулей?
(Кроме того, есть ли какие-либо книги или учебные пособия по системе крючков CMS?)
Вы можете создать систему событий как простую или сложную, как вы этого хотите.
/** * Attach (or remove) multiple callbacks to an event and trigger those callbacks when that event is called. * * @param string $event name * @param mixed $value the optional value to pass to each callback * @param mixed $callback the method or function to call - FALSE to remove all callbacks for event */ function event($event, $value = NULL, $callback = NULL) { static $events; // Adding or removing a callback? if($callback !== NULL) { if($callback) { $events[$event][] = $callback; } else { unset($events[$event]); } } elseif(isset($events[$event])) // Fire a callback { foreach($events[$event] as $function) { $value = call_user_func($function, $value); } return $value; } }
Добавить событие
event('filter_text', NULL, function($text) { return htmlspecialchars($text); }); // add more as needed event('filter_text', NULL, function($text) { return nl2br($text); }); // OR like this //event('filter_text', NULL, 'nl2br');
Затем назовите его так
$text = event('filter_text', $_POST['text']);
Или удалите все обратные вызовы для этого события, как это
event('filter_text', null, false);