Нужна небольшая поддержка PHP здесь, включенный контент отображается как «1», что означает, что его правда, но нужно, чтобы его содержимое отображалось, и я не уверен, почему это не так. Вот сокращенная версия функции:
public function content { $website->content = 'Some content here. '; ob_start(); include('myfile.php'); $file_content = ob_end_clean(); $website->content .= $file_content; $website->content .= ' Some more content here.'; echo $website->content; }
Эти результаты:
Некоторое содержание здесь 1 Еще немного контента здесь
Когда мне это нужно:
Некоторое содержание здесь «Включено содержимое файла здесь» Еще немного контента здесь
Любая идея, как я могу это исправить?
Попробуйте использовать ob_get_clean()
вместо ob_end_clean()
.
Оба очищают текущий буфер, но ob_end_clean()
возвращает логическое значение, тогда как ob_get_clean()
возвращает содержимое текущего буфера.
Вы должны использовать ob_get_clean()
, а не ob_end_clean()
. Первый возвращает строку выходного буфера и опустошает ее, в то время как последний просто выполняет очистку и возвращает bool.
Вместо использования ob_end_clean
измените существующий код на нечто похожее на нижеследующее
ob_start(); include('myfile.php'); $file_content = ob_get_contents(); ob_end_clean ();
вob_start(); include('myfile.php'); $file_content = ob_get_contents(); ob_end_clean ();
Причина, по которой я не ob_get_clean
за ob_get_clean
состоит в том, что у меня были моменты, когда другие разработчики путаются в отношении того, что действительно происходит, имя функции не указывает на то, что буферизация вывода закончится после ее вызова.
Я думаю, что эта функция будет подвержена дальнейшим ошибкам, поэтому использование ob_start
/ ob_end_clean
проще понять и улучшить для будущего обслуживания кода.
Стоит обойтись между одной дополнительной строкой кода, но более простой код для понимания.