Ключевые аспекты веб-разработки на PHP
Теория: Шаблонизация
В примере выше устанавливается обработчик, который на запрос главной страницы отдаст строчку Main Page. Такой пример хорошо подходит для демонстрации, но настоящие сайты отдают html. Причем, его размер может достигать килобайтов. Если мы попробуем создавать его так:
то такой код очень быстро превратится в неподдерживаемое месиво. Для работы с html во фреймворках используют специальные библиотеки, называемые шаблонизаторами. Принцип работы заключается в том, что в отдельном файле описывается шаблон, обычно представляемый как html с вкраплениями кода на целевом языке или псевдоязыке (примеры не из php):
Некоторые виды шаблона не очень похожи на html и крайне популярны в других языках:
А библиотека, в свою очередь, читает этот файл и подставляет необходимые переменные. Таким образом один шаблон может использоваться для разных данных. Например, на Хекслете множество уроков, но шаблон, который формирует html соответствующей страницы — один. Присмотритесь к шаблонам выше. Внутри них нередко используется свой язык с условными конструкциями, циклами и другими механизмами.
Возможно, вы уже догадались, что php сам является шаблонизатором. Ранее мы неоднократно упоминали, что php-код может перемешиваться с html в одном файле. Посмотрите типичный пример:
Получается, что сам файл — это html-код, в котором есть вставки php. Обратите внимание на то, что привычные конструкции имеют немного другой вид. В отличие от обычного кода, в котором мы используем фигурные скобки, в таком варианте используются :, и ключевые слова. Такой подход выбран разработчиками языка исключительно для удобства.
Безопасность
Об этом редко говорят во время обучения, но безопасность крайне важна при работе с html формами и шаблонами в целом. Не понимая основ защиты, вы гарантированно сделаете ошибку, которая может привести к фатальным последствиям для проекта. Например, отсутствие экранирования пользовательских данных приведет к тому, что появится возможность провести XSS атаку.
Рекомендуемые программы
Завершено
0 / 13
.png)
