Я читал этот вопрос на stackoverflow:
/programming/104516/calling-php-functions-within-heredoc-strings
и принятый ответ говорит делать простые шаблоны PHP, как это:
template.php:
<HTML> <Голова> <Title> <? = $ Название?> </ Title> </ HEAD> <Тело> <? = GetContent ()?> </ Body> </ Html>
index.php:
<? PHP $ title = 'Demo Title'; function getContent () { return '<p> Hello World! </ p>'; } включают в себя ( 'template.php'); ?>
Для меня вышеизложенное не очень хорошо структурировано в том смысле, что template.php зависит от переменных, которые определены в других скриптах. И вы используете include () для выполнения кода, когда вы это делаете include('template.php')
(в отличие от использования include () для включения класса или функции, которая выполняется не сразу).
Я чувствую, что лучший подход - обернуть ваш шаблон внутри функции:
template.php:
<? PHP шаблон функции ($ title, $ content) { ob_start (); ?> <HTML> <Голова> <Title> <? = $ Название?> </ Title> </ HEAD> <Тело> <? = $ Содержание?> </ Body> </ Html> <? php return ob_get_clean (); } ?>
index.php:
<? PHP require_once ( 'template.php'); шаблон печати ('Demo Title', '<p> Hello World! </ p>'); ?>
Второй подход лучше? Есть ли еще лучший способ сделать это?
extract($this->properties);
для извлечения свойств в переменные непосредственно перед оператором include.Шаблон всегда будет зависеть от внешних переменных, а с учетом того, что PHP является динамическим языком, во время компиляции невозможно принудительно установить, что они будут там. Таким образом, первый подход, вероятно, хорошо; Есть еще несколько проблем:
Очень простой подход - написать функцию, желательно с очень коротким именем, которая позаботится об этом; называть это,
_()
кажется, является общим соглашением. Простая версия может выглядеть так:И тогда в вашем шаблоне вы сделаете:
Больше вещей, которые можно сделать с помощью
_()
функции:htmlspecialchars
вызов, для случаев, когда вы хотите передать в него HTML, а не необработанные строки.Array
иObject
, а, скорее, что-то значимое (или пустую строку).источник
Первый
template.php
легче загрузить как есть в dreamweaver / bluegriffon / что угодно и отредактированный неопытным веб-дизайнером на стороне сервера, второй ... ну, он все еще может, но с большей вероятностью сломается в процессе редактирования ,Я бы пошел первым, чтобы он выглядел как HTML с преимуществами , как обычно предпочитают сторонние дизайнеры.
источник
Поскольку Codeigniter - моя любимая среда, я предлагаю вам решение Codeigniter-ish:
Ваш шаблон будет выглядеть так:
И вы бы отобразили его, создав экземпляр класса, передав данные в массиве в качестве параметра конструктора и вызвав метод render:
Таким образом, вы не выполняете напрямую включенный код, а также сохраняете свой шаблон читабельным, поэтому дизайнеры будут счастливы.
источник
Php не является языком программирования. Таким образом, написание строго типизированного невозможно, если ваш язык не имеет реальной системы типов. Но вы можете помочь вашей IDE, такой как PHP-Storm, сделать то, что вам нужно ...
Ваше мнение определение:
Ваш файл шаблона:
источник