Буферизация и классы

wo4010

Новичок
Всем привет,
хочу сделать чтобы в шаблоне $content заменялось на результат выполнения класса. Буфферизация в данном случае не действует. Как записать результат выполнения класса в $content?
 

wo4010

Новичок
Вот как это сделано в codeIgniter ?
И еще вопрос: Как там из переменной $data подставляются значения в шаблон? т.е. data['content'] превращается $content? вручную, вот так: $content=$data['content']; или есть авоматический способ?
 

wo4010

Новичок
начинаю догадываться... load->view() добавляет код шаблона в $html, а в конце он выводится. Есть еще варианты? с eval() еще это можно сделать
Но всетаки как в CI это реализовано? копался в нем, но не нашел. сейчас еще копаться буду...
 

wo4010

Новичок
Если с помощью file_get_contents() брать шаблон - то придется заменять переменные с помощью str_replace(), т.к. шаблонный код не исполнится.
А я хотел не парсить шаблон, а писать его сразу на php. Возможна ли моя задумка?
 

wo4010

Новичок
А ну да, еще вариант брать шаблон с помощью file_get_contents(), потом убирать из него теги <?php и ?> с помощью str_pos и делать eval();
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Всем привет,
хочу сделать чтобы в шаблоне $content заменялось на результат выполнения класса. Буфферизация в данном случае не действует. Как записать результат выполнения класса в $content?
Выполнения у класса быть не может, есть результат выполнения метода класса.

Почему это буферизация не действует. Очень даже действует.

Результат работы функции/метода записывается в переменную посредством return $something.

Чтобы не делать str_replace, надо делать include/require шаблона на php.

В твоем случае надо взять готовый шаблонизатор и не мучаться.
 

wo4010

Новичок
Да вариант подходит...
Но интересно узнать, как это делается в профессиональных фреймворках
 

wo4010

Новичок
c0dex, не хочу шаблонизатор, сам написать хочу...
кода того у меня уже нет, но почему-то не работало... Было примерно так:
ob_start();
$control = new $control->$method($parameters);
ob_end_flush();
$content = ob_get_contents();
include($template.',php');
 

wo4010

Новичок
c0dex, мне так интересно стало, что я аж прогуглил запросы "php стальная линейка" и "long steel ruler php"
 

AmdY

Пью пиво
Команда форума
Вот как это сделано в codeIgniter ?
И еще вопрос: Как там из переменной $data подставляются значения в шаблон? т.е. data['content'] превращается $content? вручную, вот так: $content=$data['content']; или есть авоматический способ?
http://php.net/extract
 

AnrDaemon

Продвинутый новичок
@AnrDaemon, длинная стальная линейка эффективней ;)
Согласен. Но тогда возрастают накладные транспортные расходы :(

c0dex, мне так интересно стало, что я аж прогуглил запросы "php стальная линейка" и "long steel ruler php"
Погугли "линейкой по пальцам"…
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@AmdY, ведь будет второй register globals у него:D
 
Сверху