если я буду делать всегда return из child::run то логика, стоящая после
просто не сработает.
ладно, я думаю пора закрыть обсуждение, я думаю, надо мне просто подход изменить.
-~{}~ 05.05.10 20:54:
P.S. Можно уточнить, что мы получаем из $this->getView();
и что из $this->init() и parent::common() ?
да. я видимо ошибся в проектировании.
$this->getView() возвращает объект View, который потом делает view->run() и получается HTML для вывода.
$this->init() и parent::common() _могут_ возвратить объект редиректа, в случае ошибки, например.
И объект view и объект редиректа называются у меня РЕЗУЛЬТАТОМ.
Вот код апликейшена:
PHP:
// ...
$controller = new $controller_name();
$result = $controller->run();
if (is_object($result))
{
if ($result instanceof Base_View) // Это вид
{
// ....
$result->run(); // формируем HTML
$this->response->sendHeaders(); // отсылаем HTTP-заголовки
echo $result->getOut(); // выводим HTML
}
else if ($result instanceof Redirect_Redirect) // это объект редиректа
{
$result->run(); // формируем URL для редиректа и др.
$this->response->setHeader('Location', $result->getRedirectUrl()); // устанавливаем заголовок
$this->response->sendHeaders(); // отсылаем заголовки
}
}
else // тут фатальная ошибка
{
throw new Exception('нет результата');
}
-~{}~ 05.05.10 20:58:
теперь я думаю, что редирект надо делать в контроллере, а не в аппликейшене. соответственно, проблема у меня отпадет сама по себе, ибо $this->init() и parent::common() не будут возвращать никаких результатов.