А я, со своей стороны, решила сделать простенькую реализацию на php. Без паттернов, не заумную, для себя…
Есть некий класс DecisionTaker
<?php
class DecisionTaker{
private static $actionsArr = array();
public function RegisterHandler($action, $handler){
if(isset($actionsArr[$action]) || $actionsArr[$action] > ''){
echo 'Fail to register handler. The action with such name already exists';
return false;
}else{
$actionsArr[$action] = $handler;
echo 'registered '.$action;
}
}
public function Execute($action, $item_id){
if(isset($actionsArr[$action]) || $actionsArr[$action] > '')
$actionsArr[$action]($id);
}
}
?>
В упрощенном варианте: массив хранит пары действие-обработчик, есть возможность зарегистрировать новый обработчик для события и собственно выполнить обработку.
Функции пишу и регистрирую в отдельном файле handlers.php
include 'DecisionTaker.class.php';
$actionManager = new DecisionTaker();
function editItem($item_id){
echo 'Editing item №'.$item_id;
}
$actionManager->RegisterHandler('edit', 'editItem');
function deleteThisShit($item_id){
echo 'Deleting item №'.$item_id;
}
$actionManager->RegisterHandler('delete', 'deleteThisShit');
Если после второго вызова
$actionManager->RegisterHandler('edit', 'editItem');
посмотреть на массив $actionsArr, он содержит только один элемент - последний. Ну а на момент попытки вызова Execute $actionsArr вообще пустой. Тоесть при каждом обращении к объекту массив чистится(( Чё так?.. И как сделать, чтоб было как мне надо?
На вопрос: "Зачем и кому это вообще нужно?" Отвечаю - "Нахрен никому не нужно". Последние пол-года не пишу на пхп, вот пытаюсь его не забывать. Не пытаюсь сделать что-то полезное для потомков равно как и нечто эталонно ООП-шное.
Заранее пасиба за помощь)
Если кто видит еще какие косяки - буду благодарна за советы, подсказки и указание на лажи