Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086

Рендер шаблона с буферизацией

04.12.2016, 09:04. Показов 1072. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, не могу разобраться с буферизацией, никогда с ним не сталкивался. Есть класс формирования шаблона:
Без буферизации:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function generate($args = []){
 
        $defaultArgs = [
                        'content' => '',
                        'data' => '',
                        'layout' => Config::get('layout'),
                        'template' => Config::get('template'),
                        ];
        $args = array_merge($defaultArgs, $args);
        extract($args);
 
        if (file_exists(Config::get('frontend_dir').$template .'/'. $layout . '.php')){
            require_once Config::get('frontend_dir') . $template .'/'. $layout . '.php';
        } else {
            throw new Except('Template File '. Config::get('frontend_dir') . $template .'/'. $layout . '.php'.' not found');
        }
    }
Используется так:
PHP
1
2
3
4
5
6
7
8
Class IndexController extends Controller {
 
    public function actionIndex(){
        Config::set('sitename', 'Test Site | Index Page');
        $this->view->generate(['blogs'=>['count'=>2, 'data'=>'mnoga',],]); // можно задать и шаблон и layout
    }
 
}
в файле шаблона:
PHP
1
 print_r($blogs);
Так все работает, но хотел попробовать с буферизацией:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public function generate($args = []){
 
        $defaultArgs = [
                        'content' => '',
                        'data' => '',
                        'layout' => Config::get('layout'),
                        'template' => Config::get('template'),
                        ];
        $args = array_merge($defaultArgs, $args);
        extract($args);
 
        if (file_exists(Config::get('frontend_dir').$template .'/'. $layout . '.php')){
            ob_start();
            require_once Config::get('frontend_dir') . $template .'/'. $layout . '.php';
            $content = ob_get_contents();
            ob_end_clean();
        } else {
            throw new Except('Template File '. Config::get('frontend_dir') . $template .'/'. $layout . '.php'.' not found');
        }
    }
Конечно же так ничего не работает, так вот, как дальше теперь со всем этим работать? Вообще есть смысл в буферизации?)

Добавлено через 28 минут
Цитата Сообщение от FloppyDisc Посмотреть сообщение
как дальше теперь со всем этим работать?
Хотел сказать как его использовать далее
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2016, 09:04
Ответы с готовыми решениями:

Сменить рендер view шаблона с текущего на другой
Доброго дня уважаемые коллеги. Столкнулся с такой проблемой. Ситуация: при get-запросе /admin у нас рендерится шаблон (допустим...

OpenGL: Как создать рендер девайс, рендер контекст встроенными средствами?
Я что-то не понял.Как создать рендер девайс,рендер контекст ВСТРОЕННЫМИ СРЕДСТВАМИ?

Работа с буферизацией
Есть "некое подобие" шаблонизатора. Основная часть кода - это классический пример работы с буферизацией. <?php function...

8
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
04.12.2016, 19:41
Цитата Сообщение от FloppyDisc Посмотреть сообщение
Вообще есть смысл в буферизации?)
есть
Цитата Сообщение от FloppyDisc Посмотреть сообщение
$content = ob_get_contents();
PHP
1
return $content;
0
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
04.12.2016, 20:07  [ТС]
Цитата Сообщение от fanatikus Посмотреть сообщение
return $content;
Да, забыл про него, но я так и делал в принципе, а дальше как с ним пользоваться? Мне же ведь нужно передавать еще параметры, которые я настраиваю в контроллере и т.д во вьюшку
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
04.12.2016, 20:53
Цитата Сообщение от FloppyDisc Посмотреть сообщение
Мне же ведь нужно передавать еще параметры,
есть же
Цитата Сообщение от FloppyDisc Посмотреть сообщение
extract($args);
0
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
04.12.2016, 21:37  [ТС]
fanatikus, ой-ой, чет я с самого начала тупил, я не выводил я просто возвращал return =)))
Цитата Сообщение от fanatikus Посмотреть сообщение
есть
Читал-читал, пишут, что ускоряет загрузку путем кэширования, но сильно ли?
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
05.12.2016, 12:23
Цитата Сообщение от FloppyDisc Посмотреть сообщение
ускоряет загрузку путем кэширования, но сильно ли?
сама по себе буферизация ничего не ускоряет. Другое дело, когда содержимое буфера можно кинуть в кеш, и потом, при следующих запросах доставать его оттуда не запуская весь сложный код программы
0
-15 / 10 / 6
Регистрация: 03.10.2012
Сообщений: 532
08.12.2016, 16:44
Так... Давайте заканчивайте здесь обсуждение того о чем не кто тут представления не имеет. Мб я не уважительно к вам отношусь но на то есть веские причины. К примеру то что не кто из вас нормально не может ответить на вопрос а лишь занимается бессмыслеными обсуждениями...


По сабжу:
PHP
1
2
3
4
ob_start();
    echo "тут я генерирую любой html code";
$result = ob_get_clean();
//В $result лежит готовый html который мы сгенерировали. мы его можем даже записать куданить в файл. file_put_contents("./result.html", $result); а также можем просто вывести как обычный echo - echo $result;
В общем на что у вас ума хватит - кэшировать или генерировать страницу а потом с помощью регулярок в ней что то править или вовсе проходить какимнить PHPQuery(аналог jQuery только на php) что бы что то вставить или изменить и т д... В общем флаг вам в руки.
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
08.12.2016, 18:04
Цитата Сообщение от SkoTi Посмотреть сообщение
Давайте заканчивайте здесь обсуждение того о чем не кто тут представления не имеет
так просветите нас
Цитата Сообщение от SkoTi Посмотреть сообщение
генерировать страницу а потом с помощью регулярок в ней что то править или вовсе проходить какимнить PHPQuery(аналог jQuery только на php) что бы что то вставить или изменить
нафига генерить а потом что-то изменять? генерить сразу,что нужно.
Цитата Сообщение от SkoTi Посмотреть сообщение
В общем флаг вам в руки.
нам флаг, а вам что?
0
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
08.12.2016, 18:31  [ТС]
Цитата Сообщение от SkoTi Посмотреть сообщение
По сабжу:
Что-то недопонимаю, а в чем отличие?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.12.2016, 18:31
Помогаю со студенческими работами здесь

Нужна помощь! Надо разобраться с двойной буферизацией!
Уважаемые господа программисты! Прошу помочь разобраться мне с моей проблемой: Ситуация такова, есть окно в котором рисуется...

Работа с файлами на уровне потокового ввода-вывода с буферизацией. С++
Всем здравствуйте. Помогите пожалуйста. Необходимо обеспечить выполнение следующих действий: *ввод информации в файл; *корректировка...

Рисование на форме из нескольких потоков с двойной буферизацией, возможно ли?
Учебное задание, несколько потоков, каждый считает траекторию своей геом. фигуры и рисует ее на форме. Никак не могу сообразить, как...

С использованием аналитико-численного метода промоделировать работу терминального комплекса с буферизацией
Есть такое задание: С использованием аналитико-численного метода промоделировать работу терминального комплекса с буферизацией запросов к...

Для использование шаблона переменной требуется список аргументов шаблона
Здравствуйте! Не могу понять в чём проблема. //ALL2.cpp #include "pch.h" #include <iostream> #include <Windows.h> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru