Задать вопрос
iDokuro
@iDokuro
Тугодум

Ексепшены в PHP или как передать объект в подключаемый файл?

Как передать $e в подключаемый файл?

Если: "Объекты-исключения являются исключениями только в блоке catch и не распространяются на вложенные файлы."

Код:
catch (Exception $e)
{
    if ($config->phalcon->debug)
    {
        include_once(rtrim($config->phalcon->viewsDir, '/').'/error/exception_debug.phtml');
    }
    else
    {
        include_once(rtrim($config->phalcon->viewsDir, '/').'/error/exception.phtml');
    }
}
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Напиши ф-ю, которая рендерит шаблон и бандит в него данные. Например так:
function render($template, array $data = []) {
  if (!file_exists($template)) {
    throw Exception("Template {$template} not found");
  }

  foreach($data as $key => $value) {
    $$key = $value;
  }
  ob_start();
  include $template;
  return ob_get_clean();
}

В твоем случае юзать так:
catch (Exception $e)
{
    $templateData = [
        'e' => $e,
    ];
    
    if ($config->phalcon->debug)
    {
        echo render(rtrim($config->phalcon->viewsDir, '/').'/error/exception_debug.phtml', $templateData);  
    }
    else
    {
        echo render(rtrim($config->phalcon->viewsDir, '/').'/error/exception.phtml', $templateData);  
    }
}

Внутри шаблона будет доступен инстанс объекта-исключения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы