Веб-разработка на PHP
Теория: HTML в PHP
Главный секрет PHP заключается в том, что сам язык — шаблонизатор. Если посмотреть на другой язык, в его файлах нельзя увидеть ничего похожего на теги <?php ... ?>.
В PHP любой файл с кодом — это шаблон. Причем этот шаблон не имеет структуры, как бывает в некоторых шаблонизаторах.
Мы можем создать PHP-файл, написать любой текст вне тегов <?php ?> и запустить код на выполнение. При этом он не упадет с указанием синтаксической ошибки.
Содержимое index.php:
Запуск этого кода выведет весь текст на экран:
То же самое касается HTML, так как это всего лишь текст. Достаточно в любом PHP-файле добавить немного HTML и запустить его, как он будет выведен на экран:
Содержимое index.php:
Запуск этого кода выведет весь текст на экран:
Такое поведение языка существует исключительно ради создания сайтов. Если запустить веб-сервер в директории с этим файлом index.php, то при обращении к этому сайту мы получим вывод как в терминале. Это значит, что мы можем заменить такой код:
На такой:
Отсюда следует важный вывод. Любой PHP-файл – это обычный текстовый файл со вставками PHP-кода с помощью тегов <?php ?>. Любой текст, написанный внутри него, отдается в вывод как есть, будь то браузер или запуск в командной строке.
Теперь добавим немного PHP. Шаблон становится шаблоном, когда внутри него появляется подстановка данных. Принцип работы: в любом месте шаблона вставляются теги <?php ?>, внутри которых можно написать код. Фактически мы имеем дело с обычной строковой интерполяцией:
Добавим немного программирования. Запуск следующего кода вернет такой же результат, что и код выше:
В этом примере мы добавили один блок сверху файла, внутри которого создали переменную. Затем мы использовали ее в другой вставке.
Все содержимое файла находится в одном пространстве и блоки кода, определенные дальше по тексту, имеют доступ к данным предыдущих блоков. Что важно, подстановка данных из кода происходит только в том случае, если этот код выполняет печать:
Вывод на экран после запуска:
Для удобства вставки кода в HTML PHP предлагает альтернативный синтаксис для стандартных конструкций языка. Например, для вставки значения используется сокращенная версия тега начала PHP-кода: <?= <код на php> ?>. Она отличается от полной тем, что вместо <?php echo ... используется <?= ....
Сокращенная вставка
If
Switch
Foreach
С одной стороны поддержка CGI внутри самого языка позволяет начать делать сайт «на коленке» без особых знаний программирования и HTTP, что многие и делают. С другой — PHP толкает к созданию не поддерживаемого кода, который не может никто прочитать кроме автора.
Посмотрите сами:
Такой способ программирования возможен только в PHP, потому что только PHP это сразу и язык, и шаблонизатор, и CGI-скрипт. При таком способе организации кода сайт быстро начинает представлять собой мешанину HTML и PHP.
Если количество разных страниц сайта достигнет хотя бы десятка, то поддержка уже станет намного сложнее. Безопасность такой шаблонизации находится на нуле (см. XSS).
Также PHP не поддерживает макеты — специализированные шаблоны, содержащие обвязку сайта, в которую вставляется HTML конкретного обработчика.
По этой причине в PHP используют шаблонизаторы, написанные на самом PHP. Наиболее популярные среди них Blade и Twig. Также рекомендуем шаблоны на основе Slim, но в PHP они не так популярны, как в JS или Ruby.
Шаблонизаторы будут одной из тем следующих уроков.
.png)
