PHP (англ. рекурсивный акроним PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста», или Personal Home Page Tools — «Инструмент для создания персональных веб-страниц») — скриптовый язык программирования, применяемый для разработки веб-приложений. Поддерживается подавляющим большинством хостинг-провайдеров, является одним из лидеров среди языков программирования, применяемых для создания динамических веб-сайтов. По синтаксису язык очень близок к C.
Язык PHP — частый объект справедливой критики и бесчисленных насмешек. Каждая его положительная сторона одновременно является и отрицательной, все зависит от того, с какой стороны смотреть на преимущества и недостатки.
Язык чрезвычайно прост в изучении, что является его бесспорным достоинством. Оно же и недостаток: слишком низкий порог вхождения способствует появлению «тоже-программистов» на PHP, более-менее владеющих языком, но не знакомых с понятиями культуры и дисциплины программирования. На нем без особых усилий могут начать кодировать люди, не знающие базовых основ программирования. Все это привело к появлению неисчислимого количества кое-как работающих кустарных поделок на PHP. К счастью, с каждой новой версией язык немного изменяется, и часть этих поделок отмирает, поскольку уже не может корректно работать.
Еще один «плюс и минус» PHP — свободная типизация данных, автоматические приведения типов в контексте операции и отсутствие необходимости предварительного объявления переменных. Эта особенность дает программисту большую свободу, но при низкой дисциплине программирования, свойственной новичкам, порождает массу неочевидных логических ошибок и угроз безопасности. Скрипты на PHP лидируют не только по распространенности, но и по количеству взломов, порожденных небрежным кодированием.
Изначально огромным преимуществом PHP стала возможность просто и естественно внедрять интерпретируемый код с операторами вывода (и условными операторами) прямо в HTML с помощью специального псевдотега
<?php ... ?>
Это сразу сделало язык PHP практически идеальным инструментом шаблонизации — такая вставка кода может извлекать из хранилища (файла или базы данных) нужное содержание и напрямую выводить его в нужном месте страницы. Также в ходе исполнения кода можно генерировать теги форматирования, строя целые блоки страницы. Вставка условных операторов позволяет скрывать или варьировать отдельные участки HTML-кода по заданным условиям.
Но в ходе развития функциональности языка инициативу перехватили «чистые программисты» и начали отделять процессинг от шаблона. В результате интерпретатор PHP оброс огромным количеством функций на все случаи жизни, прямые врезки в HTML-код стали непопулярными, и в конце концов на PHP начали создавать шаблонизаторы вроде Smarty, «прекомпилирующие» шаблон с генерацией… того же самого PHP-кода, вставленного в HTML. Таким образом, рекурсия сопутствует PHP во всем — она содержится не только в названии PHP, но и в его применении.
Первоначально создание подобных инструментов оправдывали удобством верстальщиков — авторы заявляли, что верстальщик не обязан знать языки программирования, поэтому нужно заменить вставки PHP чем-нибудь попроще. В ходе развития, как это всегда бывает, Smarty превратился в достаточно развитый макроязык, в котором верстальщику разобраться ничуть не легче, чем в PHP. Теперь для полноценного применения этого шаблонизатора требуется подготовленный программист, хорошо знающий и PHP и Smarty. Можно ждать следующего шага рекурсии.