Я создаю свой собственный шаблон MVC, чтобы облегчить процесс создания домашних страниц. Моя система шаблонов требует моего класса контроллера для вывода моих просмотров. Это означает, что я должен выводить файл через php-функцию. Я искал какое-то время и не могу найти решение.
Как я могу через функцию PHP запустить строку, представляющую некоторый исходный код («<?», «<? Php», «?>» И т. Д.) Как php? Эваль не принял бы мой <? знаки (и я почему-то читал эту функцию).
Вы можете выполнить php-код и собрать вывод следующим образом:
ob_start(); include "template.phtml"; $out1 = ob_get_clean();
Заменив «echo file_get_contents ()» на «include ()», поскольку GordonM предложил работать точно так, как нужно. не могу подняться, так как я слишком новичок, но для моих нужд это прямой ответ на заголовок вопроса.
Просто включите () в файл, а все будет в порядке. Я не глубоко вникнул в исходный код, но я уверен, что Zend Framework реализует шаблоны.
$code = '<?php function GetBetween($content, $start, $end) { $r = explode($start, $content); if (isset($r[1])){ $r = explode($end, $r[1]); return $r[0]; } return ''; }'; function _readphp_eval($code) { ob_start(); print eval('?>'. $code); $output = ob_get_contents(); ob_end_clean(); return $output; } print _readphp_eval($code);
Ну, eval – это не дерьмо как таковое, просто создать дыру в безопасности можно, если вы не будете осторожны в том, что вы разрешаете внутри этого eval (это, возможно, и то, что это может быть плохо для читаемости кода) ,
Что касается <?
знаки, это потому, что eval ожидает php-код, поэтому, если вы не хотите смешивать php с простым выходом, включите только тег закрытия ?>
.
В общем, однако, вы можете лучше внедрять шаблоны, попытаться изучить выходную буферизацию.