Взятие контента или ob_start();

snark

Новичок
Взятие контента или ob_start();

Меня давно беспокоит моя схема взятия сгенерированного компонентами сайта контента:

PHP:
$act = (isset($_GET["act"]))?$_GET["act"]:"home";

ob_start();
switch ($act)
{
    case "home"           : include "components/comp.index.php"; break;
    case "page1"          : include "components/comp.page1.php"; break;
    case "page2"          : include "components/comp.page2.php";  break;
    default: break;

}

$content = ob_get_contents();
ob_clean();
и потом переменную $content передаю шаблонизатору и паршу шаблон.

Не кривая ли эта конструкция? Может стоит запускать соответсвующие функции в каждом компоненте, предоположим run(), которая бы возвращала буфер с контентом, собранные посредствам $content.= .... , а не выводом echo ?

Спасибо!
 

nirex

Новичок
лучше выводить сразу, если это на экран, а не письмом на почту.
 

snark

Новичок
nirex
Простите, куда сразу? Мне контент нужно вставить в шаблон, который парсится в конце выполнения скрипта...
 

nirex

Новичок
аааа ну тогда другой разговор, правда такого изврата как у вас выше я еще не встречал
 

snark

Новичок
Вот, то-то и оно... ) я тоже это чувствую...
так, а может вы всеже проясните картину?
 

demon_goo

Новичок
по моему вполне нормальный вариант в данном случае, пусть уж будет в ob_start()/ob_get_contents() чем тупо во всех существующих "компонентах" расставлять присваивание $contents .=. Судя по всему там сразу HTML выдается, так что смысла в такой смене 0.
 

snark

Новичок
нет, но у вас как сделано?
В компонентах безусловно генерируется HTML опять же шаблонизатором и выводиться посредством echo...
 

Sluggard

Новичок
у вас как сделано?
В "компонентах" не генерируется HTML. Все необходимые данные передаются во View (у тебя в шаблонизатор). С этими данными, при необходимости, можно передать и путь к шаблону, который требуется подключить.
 

snark

Новичок
Гхм...

Допустим проект(сайт) состоит из: главной страницы (новости), галереи фатографий и формы обратной связи.

у меня подключение соответствующий компонентов происходит в index.php (Ядро/Core) здесь же вывод основного (главного/верхнего) шаблона с подстановкой ключевых слов (в зависимости от подключенного компонента), выделение выбранного элемента меню (активная страница) и соответственно самого контента, который вернул компонент. Т.е. каждый компонент сам генерирует СВОЙ интерфейс (представление) и передает его Core для вывода ... разве не логично?
 

С.

Продвинутый новичок
Sluggard, не сбивай человека с толку. Шаблонизатор это не View, а Control. Шаблон - View.
 

snark

Новичок
Ничего не понял...
Я хотел узнать, ничего страшного в том, что я использую ob_start()/ob_get_contents() ... сложилось, что здесь как-о все по другому работают с компонентами (модулями) сайта... и держат все в секрете... (
 

С.

Продвинутый новичок
Да нормально все, не шугайся. По ходу дела усовершенствуешь.
 

snark

Новичок
))) Да по какому ходу дела, я уже программирую на PHP 4 года... ) Просто, сейчас хочу знакомую обучить, но вот волнуюсь, правильно ли я поступлю, если буду учить ее такой схеме построения движка...
 

Sluggard

Новичок
С.
Представление (View) - компонента MVC, отвечающая за отображение информации. Это может быть шаблонизатор или что-либо подобное, цель которого является только в выводе информации в виде HTML на основе каких-либо готовых данных.

Когда я начну сбивать человека с толку, ты узнаешь об этом первый.
 

С.

Продвинутый новичок
Снарк, значит у тебя "южный" учет. Три года за один. Оттуда же и наверное и разновидность дизлексии - невосприимчивость первых предложений в абзцах.
 

littleannika

Новичок
Работаю с движком, где основной контент берется таким образом. Что-то выводится так, что-то просто print-ом. Все зависит от движка.

Некоторые разработчики куски пхп-кода в базе хранят... и там даже смысл какой-то есть и удобство.
 

snark

Новичок
littleannika
Куски PHP-кода в БД хранить, вот это клааасс!!! )

Sluggard
Архитектурный шаблон MVC (Модель-представление-контроллер) прекрасная вещь! Буду юзать!
 

С.

Продвинутый новичок
Sluggard, вот я и узнал первым. К то му же я узнал, что ты сам с толку сбит. View - компонента MVC, отвечающая за то, как будет отображена информация. Найди три отличия в формулировке.

View
Renders the model into a form suitable for interaction, typically a user interface element. Multiple views can exist for a single model for different purposes
(Wikipedia)
 
Сверху