Событийная Модель
Всё это добро я назвал EventManager, реализует паттерн observer и позволяетсоздавать события в разных местах фр., но в тоже время обрабатывать их (события) в одном определённом месте - папка protected/events. В этой папке находятся обозреватели (observers), они загружаются автоматически (средствами PHP). Каждый класс обозревателя имеет суффикс Observer (например testObserver), каждый такой класс наследуется от класса Observer . Название метода совпадает с названием события.
Запуск события осуществляется ф-ей:
function trigger_event($slot, $event, &$params)
$slot - слот событий
$event - название события
$params - параметры, передаваемые ссылкой
Например, если сработало событие trigger_event('test', "test_event", $params); , тогда в папке protected/events в файле test.php в классе class testObserver сработает метод test_event .
class testObserver extends Observer {
public function test_event(&$params) {
//....
$params['1'] = 'New param value';
}
}
Это был обозреватель по умолчанию, также можно назначить сколько угодно пользовательских обозревателей (унаследованных от customObserver), при этом нужно соблюдать 2 условия:
1)Избегать конфликта имён классов
2)Обозреватель должен быть создан до срабатывания события
class test_observer extends customObserver {
public function test_event(&$params) {
print "Inside custom observer";
$params['x'] = 'New param value';
}
}
function trigger_event($slot, $event, &$params)
$slot - слот событий
$event - название события
$params - параметры, передаваемые ссылкой
Например, если сработало событие trigger_event('test', "test_event", $params); , тогда в папке protected/events в файле test.php в классе class testObserver сработает метод test_event .
class testObserver extends Observer {
public function test_event(&$params) {
//....
$params['1'] = 'New param value';
}
}
Это был обозреватель по умолчанию, также можно назначить сколько угодно пользовательских обозревателей (унаследованных от customObserver), при этом нужно соблюдать 2 условия:
1)Избегать конфликта имён классов
2)Обозреватель должен быть создан до срабатывания события
class test_observer extends customObserver {
public function test_event(&$params) {
print "Inside custom observer";
$params['x'] = 'New param value';
}
}
CACHE
Написал небольшой, простенький модуль для кеширования
cache::start(); - начать кеширование
cache::start(); - начать кеширование
public static function start($time = 10, $name = '')
$time - промежуток кеширования (секунды)
$name - название файла для кеша (по умолчанию - хеш из URL)
cache::end(); - закончить кеширование
cache::end(); - закончить кеширование
Запускается всё это дело из frontController
Файлы хранятся в папке protected/cache
Ещё один вариант использования класса cache:
//Проверяем, закеширован ли 'translate',
//а также возраст кеша - меньше часа
if(cache::cache_exists_time('translate', 3600)) {
//Загружаем
$translate = cache::cache_load('translate');
}
else {
//Загружаем данные в переменную $translate обычным способом
//...
//Сохраняем кеш
cache::cache_save('translate', $translate);
}
Ещё один вариант использования класса cache:
//Проверяем, закеширован ли 'translate',
//а также возраст кеша - меньше часа
if(cache::cache_exists_time('translate', 3600)) {
//Загружаем
$translate = cache::cache_load('translate');
}
else {
//Загружаем данные в переменную $translate обычным способом
//...
//Сохраняем кеш
cache::cache_save('translate', $translate);
}
Комментариев нет:
Отправить комментарий