Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с ob_start() 
V
    Опции темы
Shark
Дата 4.6.2011, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



файл config.php
Код

<?php
class Option 
    {
        public $page_site = array
            (    'main' => 'Главная',
                'about_clan' => 'О клане',
                'about_user' => 'Об участниках',
                'statistica_user' => 'Статистика участников',
                'contakts' => 'Контакты'
            );
        public $content_menu = "";
    }

$Option = new Option();
?>


файл index.php
Код

<?php

define( '_INDEX', 1 );
include "config.php";


ob_start();
include_once ('template/menu.tpl.php');
$Option->content_menu = ob_get_contents();
ob_end_clean();
?>

файл menu.tpl.php (находится в папке tamplate)
Код

<?php
if (!defined('_INDEX'))die ();
?>
    <a href=><?php echo $Option->page_site['main']; ?></a>


почему выводится пустая страница?

если в файле index.php
заменить это
Код

ob_start();
include_once ('template/menu.tpl.php');
$Option->content_menu = ob_get_contents();
ob_end_clean();

на это
Код

include "template/menu.tpl.php";

все работает нормально


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
InfMag
Дата 5.6.2011, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



Shark, если я не ошибаюсь кратко оглянув код, то проблема в
Код

ob_end_clean();
_clean заканчивает буфер и чистить его, а вывода дальше у вас никакого нет. Допишите после него:
Код

echo $Option->content_menu;


Это сообщение отредактировал(а) InfMag - 5.6.2011, 16:10
PM   Вверх
Shark
Дата 6.6.2011, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



InfMag, помогло...
а можешь пояснить подробнее.. из-за чего это так? вроде же и без этого должно отображаться!?


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
InfMag
Дата 6.6.2011, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



Shark, нет, не должно.
Ну на низком уровне мне сложно объяснить, я как на самом деле внутри реализовано не знаю, расскажу только как я себе представляю.

Я себе представляю происходящее так: при ob_start() дальнейший код как бы не в документе уже происходит, а в отдельном контейнере выполнения с контекстом, который был описан выше. Или вроде как компилируется, а потом исполняется позже при вызове компилированный код. Все echo и прочие выводы попадают в этот самый буфер, а не в документ. ob_get_contents() отдаёт контент, что произошёл в буфере, но его нужно получать до закрытия буфера.

ob_end_clean() просто закрывает буфер, очищая его, и контент если осталься, то только там, куда ты передавал результат ob_get_contents(), если передавал конечно.
ob_end_flush() закрывает буфер и сразу выводит его результат выполнения, после очищает.

В общем я бы сравнил с eval-ом) Как-то так по колхозному.

Добавлено @ 01:24
Ну ты можешь выполнить свободно любой код где понравится, а его вывод потом где угодно выставить.

Это сообщение отредактировал(а) InfMag - 6.6.2011, 01:24
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.