Может ли кто-нибудь объяснить, почему следующий скрипт ведет себя по-разному на двух разных платформах?ob_get_clean() не работает над MAMP, но работает на WampServer?
Сценарий:
<?php
echo "hello!";
$view_content = ob_get_clean();
echo "'".gettype($view_content)."' >".$view_content."<";
Выход 1 (на WampServer 2i - PHP v5.3.0 - Windows 7 x64):
'string' >hello!<
Выход 2 (на MAMP 1.9 - PHP v5.3.2 - OSX 10.6.4):
hello!'boolean' ><
Похоже, что MAMP не выполняет функцию 'ob_get_clean()' правильно. Я также пробовал v5.2.13 php на MAMP и увидел ту же проблему.
Я понимаю, что это разные «версии» php, но я чувствую, что это должно работать. Есть ли расширение/модуль, который мне не хватает?
Спасибо wrikken, Есть ли другой способ выполнить ту же задачу, которая более эффективна и/или элегантна? Под «задачей» я подразумеваю подстановку всего предыдущего вывода в какой-то шаблон, продемонстрированный просто выше. Я использую эту систему в своем шаблоне шаблонов (MVC). – phife757
Как правило, единственная причина для вывода буфера связана с тем, что вам может потребоваться отправить другие заголовки. Правильное решение состоит в том, чтобы сначала выполнить все манипуляции и данные, а после того, как вы получили все данные и отправили заголовки, затем начните вывод тела ответа. С надлежащей архитектурой это легко достигается. Однако, если вы планируете систему просто эхо/распечатываете напрямую в STDOUT, это боль. Это _hould_ IMHO возвращает строки, которые вы выберете для эха или сохранения позже. Если все это происходит в STDOUT, я вручную вызываю функции 'ob_start()' непосредственно перед выполнением. – Wrikken