Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Class Common_EditActionHelper implements Common_IActionHelper
{
protected $controller = null;
public function __construct( Zend_Controller_Action $controller ) {
$this->controller = $controller;
}
public function execute() {
// логика из _editActionHelper()
}
}
Class Common_Controller extends Zend_Controller_Action
{
public function executeActionHelper( $action ) {
$class = 'Common_' . $action . 'ActionHelper'; // опустим валидацию $action для наглядности
$helper = new $class( $this );
$helper->execute();
}
}
Class VideoController extends Common_Controller
{
public function editAction() {
$this->executeActionHelper( 'edit' );
}
}
class Model_Controller
{
...
public function editAction()
{
if ($this->_hasEditAction()) {
$this->_editActionHelper();
} else {
throw new Zend_Controller_Action_Exception('страница не найдена' , 404);
}
}
protected function _hasEditAction()
{
return true;
}
...
}
$form->redirect->setValue( $_SERVER['HTTP_REFERER'] );
Применяем делегирование совместно с наследованием для организации контроллеров действий