В противоположность использованию включения, которое выполняет включенный php в файле..., это возможный сохранить содержание php файла к переменной - но с php, все еще неповрежденным и исполняемым?
Моя цель смотрит что-то как:
$template = some_imaginary_include_function('myfile.php');
foreach($list_of_blogs as $blog) {
// somehow get blog content in template and render template;
}
Я знаю, что это - немой пример..., но я надеюсь, что он иллюстрирует общее представление. Если я должен циклично выполниться через шаблон 50 раз на странице (скажите, что это - список блогов), это кажется немым, чтобы на самом деле выполнить и включать для каждого.
Я неправ? Существует ли способ сделать это?
Как насчет этого ...
function getTemplate($file) {
ob_start(); // start output buffer
include $file;
$template = ob_get_contents(); // get contents of buffer
ob_end_clean();
return $template;
}
в основном, это получит все $ файл
, и разбирать его с PHP, затем верните выходные данные в переменную.
с помощью $ content = file_get_contents ('/ path / to / four / file.php');
Все теги PHP будут сохранены, вы можете затем Eval ()
или токена
их делать все, что вы хотите.
, выполнение включенных в цикл так глупо .
Все переменные, определенные до того, как включают, будут доступны в ваш шаблон.
Держите это просто!
== Редактирование ==
Или, может быть, вы можете улучшить ответ ALEX:
function getTemplate($file, $template_params = array()) {
ob_start(); // start output buffer
extract($template_params); // see PHPDoc
// from here $var1 will be accessible with value "value1"
// so your template may contain references to $var1
include $file;
$template = ob_get_contents(); // get contents of buffer
ob_end_clean();
return $template;
}
echo getTemplate('your_template.php', array('var1' => 'value1'));
(не так просто ^^)
Запись функция во включенном Сценарии PHP, который возвращает желаемый вывод. Определить константу в основном Сценарии PHP. Во включенном Сценарии PHP проверьте на отсутствие упомянутой константы и повторите возвращаемое значение функции, если это верно.
Несмотря на то, что он часто предполагается злым, вы можете попробовать использовать Eval () вместе с Get_File_Contents ()
Если вы разрабатываете в 5.3. Это намного проще, но даже на 5,2 вы можете использовать то, что называется анонимной функцией для этого.
Анонимная функция позволит вам пройти код в качестве переменной. Чтобы загрузить этот код из файла, который вам может придеться файл_get_bytes в строку, EVALE, затем введите в переменной, но вы получите точку, которую я надеюсь.
5.3: Анонимные функции
5.2: create_function