Альтернатива ob_start(); include?

Собственно работаю над простой CMS "платформой" модулей, суть в простоте подключения новых модулей и их максимально гибкое использование,
каждый модуль это набор классов и методов в том числе метод inHTML - в силу не желания использовать шаблонизаторы для поддержки родного php кода в шаблонах было изначально решено использовать в данном методе следующую структуру:
ob_start();
$title = 'NAME PAGE';
include  '/test.php';
$this->html ob_get_clean();


в файле /test.php соответственно это:
<h1>Страница: <?=$title?></h1>

Все вроде отлично, работает без проблем да и код за счет классов легок к восприятию + иерархия вполне удобоваримая поваляет в этом быстро разобраться. Но есть минус из за использования ob_get_clean(); не работает header("Location: ...") даже перед выводом какого либо кода только если он вызван до всех ob_start(), происходит это как я понимаю из за того, что ob_get_clean(); отправляет данные в браузер пусть и не выводит...
Исходя из всего этого вопрос как так-же локально реализовать нечто подобное но без ob_start() и шаблонизаторов?

P.S. Надеюсь вопрос понятен.
  • Вопрос задан
  • 883 просмотра
Решения вопроса 1
@iliks Автор вопроса
Проблему с не работающим header() я устранил, все было из за одного файла который имел в кодировке BOM что странно... "как он туда попа?" В общем вопрос я осавляю актуальным только ради интереса существует ли альтернатива для ob_start();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
scherbuk
@scherbuk
логично сделать метод
function render(){
   ob_start ...
} 
// а далее 
if(true) {
 $this->render();
} else {
  header("location: uri");
}
Ответ написан
Ваш ответ на вопрос

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

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