[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Буферизация
ruzarh
Проблема в следующем, вот маленький скриптик


function view($inc){
ob_start();
include CMS_ROOT . $inc .'.php';
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}


когда я подключаю файл

$chat = view('components/chat/router');


У меня переменные из вне не попадают внутрь буфферизированного файла.

т.е. у меня подключены файлы с функциями, а внутри буфферизирующегося файла к ним доступа нет. Как с этим бороться?
Еще раз подключать функции внутри блока? Или можно придумать какую нибудь другую конструкцию?



Спустя 9 минут, 4 секунды (8.03.2012 - 19:17) Visman написал(а):
function view($inc, $array_of_vars = NULL){

if (!empty($array_of_vars)) {
extract($array_of_vars);
}

ob_start();
include CMS_ROOT . $inc .'.php';
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}

Спустя 1 минута, 29 секунд (8.03.2012 - 19:18) Winston написал(а):
function view($inc, $argv = array()){
extract($argv);
ob_start();
include CMS_ROOT . $inc .'.php';
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}

А вызывать таким образом
$vars = array('title' => 'Тайтл', 'text' => 'text', 'other' => 'что то еще');
$chat = view('components/chat/router', $vars);

// А в шаблоне уже можешь выводить переменные так
echo $title;
echo $text;
echo $other;

Спустя 4 минуты, 14 секунд (8.03.2012 - 19:22) ruzarh написал(а):
Вот в контексте

$var = 'трям';

$chat = view('components/chat/router');


теперь файл components/chat/router.php который я подключаю, в нем переменная $var не присутствует.

У меня снаружи много всего определено, а внутри блоков они мне тоже нужны.

Да и можно как нибудь массово, просто и функции подключенные он тоже не видит.

Спустя 2 минуты, 43 секунды (8.03.2012 - 19:25) Winston написал(а):
ruzarh
Ты мой код вообще смотрел?

Спустя 1 минута, 16 секунд (8.03.2012 - 19:26) Visman написал(а):
Почему это он функции не видит?
А переменные массово без указания переменных - нельзя.

Спустя 1 минута, 12 секунд (8.03.2012 - 19:28) ruzarh написал(а):
Winston
Да спасибо смотрел, но просто если все что надо я буду в него запихивать, у меня уйдет время больше чем я просто без буфферизации костыль какой нибудь сделаю.

Visman
Незнаю, но если файлы подключаются в этом буффере то он все видит, а если в буффере еще один мини буфер сделать то в нутри второго первый не видит. И если вообще вне буффера файл подключить, в буфферах он не видит, это и функций касается.

Спустя 1 минута, 32 секунды (8.03.2012 - 19:29) johniek_comp написал(а):
посоны че за extract? и что он там делает?

Спустя 3 минуты, 9 секунд (8.03.2012 - 19:32) Visman написал(а):
Цитата (ruzarh @ 9.03.2012 - 00:28)
но просто если все что надо я буду в него запихивать, у меня уйдет время больше чем я просто без буфферизации костыль какой нибудь сделаю.

Значит у тебя подход не правильный для этого действия.

Цитата (johniek_comp @ 9.03.2012 - 00:29)
посоны че за extract? и что он там делает?

гугл - php extract wink.gif

Спустя 3 минуты, 45 секунд (8.03.2012 - 19:36) ruzarh написал(а):
Подход как раз верный, отделять разные выводы блоков друг от друга, но придется без буффера это делать вот и все(( Уже час копаюсь и ни какого результата, вот и на форуме немного не то предалагают((.

Спасибо всем, если найду решение то отпишусь.

Спустя 14 часов, 40 минут, 4 секунды (9.03.2012 - 10:16) ruzarh написал(а):
Вообщем не нашел я грамотного решения, но вот так все заработало


ob_start();
include CMS_ROOT . 'components/chat/router.php';
$chat = ob_get_contents();
ob_end_clean();


Просто в коде. Спасибо всем за участие))


_____________
Не портите мои нервные клетки, так как в них живут нервные тигры!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.