PHP, как знают фанаты языка, — преемник продукта, который назывался PHP/FI. Первое воплощение PHP, которое в 1994 создал Расмус Лердорф, было простым набором CGI-скриптов на языке программирования Си. Изначально Расмус пользовался скриптами, чтобы отслеживать посещения своего веб-резюме, и назвал набор этих скриптов Personal Homepages Tools («Инструменты для персональных домашних страниц»), но чаще упоминалось название PHP Tools. Со временем требовалось всё больше улучшений функциональности. Расмус переписал PHP Tools и создал более крупную и богатую реализацию. Новая реализация умела взаимодействовать с базами данных и решать другие задачи. Так появилась платформа, на которой пользователи создавали простые динамические веб-приложения наподобие гостевых книг. В июне 1995 года Расмус » выложил исходный код PHP Tools в открытый доступ, что позволило разработчикам использовать наработки Лердорфа по своему усмотрению. Это также разрешало и поощряло пользователей исправлять ошибки в коде и улучшать его.
В сентябре того же года Расмус посмотрел на PHP шире и — на короткое время — убрал из названия аббревиатуру PHP. Теперь в виде инструмента FI (сокращение от «Интерпретатор Форм») новая реализация включала в себя набор основных функций того PHP, который мы знаем сегодня. Функции языка включали Perl-подобные переменные, автоматическую интерпретацию форм и встраиваемый в HTML синтаксис. Синтаксис языка был похож на язык программирования Perl, хотя и был гораздо более ограниченным, простым, и отчасти противоречивым. Чтобы вставлять код в HTML-файл, разработчикам пришлось использовать HTML-комментарии. Хотя этот метод был недостаточно хорошо принят, FI по-прежнему набирал популярность как CGI-инструмент, но всё-таки не как язык. Однако перемены начались в следующем месяце, когда в октябре 1995 года Расмус выпустил полностью переписанный код. С вернувшимся именем PHP, но уже сокращённым от Personal Home Page Construction Kit, это был первый релиз, который мог похвастаться расширенным интерфейсом сценариев. Язык намеренно напоминал язык программирования Си по структуре, поэтому разработчики, которые были знакомы с Си, Perl и похожими языками, легко воспринимали язык. Поскольку до сих пор разработчики ограничивались UNIX- и POSIX-совместимыми системами, они стали исследовать пути работы с PHP на системах Windows NT.
Код получил ещё одно существенное преобразование в апреле 1996 года. Объединив названия предыдущих версий, Расмус представил PHP/FI. Реализации второго поколения начали по-настоящему развивать PHP из набора инструментов в самостоятельный язык программирования. PHP включал в себя встроенную поддержку баз данных DBM, mSQL и Postgres95, блоки данных cookies, поддержку функций, которые определяли пользователи, и многое другое. В июне PHP/FI присвоили версию 2.0. Интересный факт — существовала только одна полная версия PHP 2.0. Когда она, наконец, в ноябре 1997 года вышла из статуса бета-версии, базовый движок синтаксического анализа уже полностью переписали.
Несмотря на короткую историю разработки, PHP/FI продолжал набирать популярность в молодом мире веб-разработки. В 1997 и 1998, PHP/FI стал культом для нескольких тысяч пользователей по всему миру. Исследования Netcraft в мае 1998 года показали, что почти 60 тысяч доменов передавали заголовки, которые содержали значение «PHP», что подтверждало установку на сервере языка PHP. Это число равнялось примерно 1 % от всех доменов в Интернете в то время. Несмотря на эти впечатляющие цифры, развитие PHP/FI было обречено на ограничения; хотя ряд участников вносил незначительный вклад, язык по-прежнему в основном разрабатывал один человек.
Пример #1 Пример кода на PHP/FI
<!--include /text/header.html--> <!--getenv HTTP_USER_AGENT--> <!--ifsubstr $exec_result Mozilla--> Эй, у вас Нетскейп!<p> <!--endif--> <!--sql database select * from table where user='$username'--> <!--ifless $numentries 1--> Извините, такой записи нет<p> <!--endif exit--> Добро пожаловать, <!--$user-->!<p> На вашем счету осталось <!--$index:0--> "кредитов".<p> <!--include /text/footer.html-->
PHP 3.0 был первой версией, которая напоминала PHP, каким его знают сегодня. Посчитав PHP/FI 2.0 всё ещё неэффективным и недостаточно функциональным для написания кода в коммерческих приложениях, которые разрабатывали для университетского проекта, Энди Гутманс и Зив Сураски из Тель-Авива начали ещё раз заново переписывать парсер в 1997 году. Связавшись с Расмусом, они обсудили различные аспекты текущей реализации и их новой разработки PHP. Чтобы улучшить движок и использовать существующую базу пользователей PHP/FI, Энди, Расмус и Зив решили сотрудничать для развития нового, независимого языка программирования. Этот совершенно новый язык выпустили под новым названием, без упоминания о персональном назначении, как в PHP/FI 2.0. Язык переименовали просто в PHP, а его значение превратилось в рекурсивный акроним — PHP: Hypertext Preprocessor.
Сильной стороной PHP 3.0 была расширяемость ядра. Кроме того что PHP обеспечивал пользователей надёжной инфраструктурой из множества отдельных баз данных, протоколов и API-интерфейсов, расширяемость PHP 3.0 привлекла к языку много сторонних разработчиков, которые хотели добавить в него свои модули. Возможно, это и был главный ключ к успеху, но стоит добавить, что немаловажным шагом оказалась поддержка объектно-ориентированного синтаксиса и намного более мощного и последовательного синтаксиса самого языка.
В июне 1998 года со множеством новых разработчиков со всего мира, которые присоединились к проекту, новая команда разработчиков PHP объявила PHP 3.0 официальным преемником PHP/FI 2.0. Активная разработка PHP/FI 2.0, которая практически прекратилась в ноябре предыдущего года, теперь официально закончилась. Примерно через девять месяцев открытого публичного тестирования, когда объявили об официальном выпуске PHP 3.0, PHP уже установили на более чем 70 000 доменах по всему миру и язык больше не ограничивается POSIX-совместимыми операционными системами. Относительно небольшая доля доменов с установленным PHP размещалась на серверах под управлением Windows 95, 98 и NT, и Macintosh. На пике популярности доля веб-серверов в Интернете, на которые установили PHP 3.0, составляла около 10 %.
К зиме 1998 года, практически сразу после официального выхода PHP 3.0, Энди Гутманс и Зив Сураски начали переработку ядра PHP. В задачи входило увеличение производительности сложных приложений и улучшение модульности кодовой базы PHP. PHP 3.0 разрешил подобным приложениям успешно работать с набором баз данных и поддерживать большое количество API-интерфейсов и протоколов, но у PHP 3.0 не было качественной поддержки модулей и приложения работали неэффективно.
Новый движок, который назвали Zend Engine (от имён создателей: Zeev и Andi), успешно справлялся с поставленными задачами. Впервые движок представили в середине 1999 года. PHP 4.0, основанный на этом движке и принёсший с собой набор дополнительных функций, официально вышел в мае 2000 года, почти через два года после выхода предшественника. Кроме значительного улучшения производительности, в PHP 4.0 был ещё ряд ключевых нововведений: поддержка намного большего числа веб-серверов, поддержка HTTP-сессий, буферизация вывода, более безопасные способы обработки информации, которую вводили пользователи, и набор новых языковых конструкций.
В июле 2004, после долгой разработки и нескольких предварительных выпусков,
выпустили PHP 5. В основном версия управляется ядром
Zend Engine 2.0
с новой объектной моделью
и десятком других нововведений.
Команда разработчиков PHP включает в себя десятки разработчиков, а также десятки других организаций, которые работают над проектами, которые связаны с PHP и поддержкой языка: библиотекой PEAR, репозиторием PECL и документацией, а также базовой инфраструктурой сети более чем из ста серверов на шести из семи континентах мира. Основываясь на статистике прошлых лет, можно с уверенностью предположить, что PHP теперь установили на десятки или даже, возможно, сотни миллионов доменов по всему миру.
В план обновления движка PHP 6 входила полная поддержка Юникода. Позже от этой работы отказались, но функции, которые планировались для PHP 6, внедрили в очередные выпуски: в PHP 5.3 внедрили поддержку пространств имён, а в PHP 5.4 — трейты и «короткий» синтаксис массива.
PHP 7.0 выпустили в 2015 с обновлённой версией
ядра — Zend Engine 3.0
, в которой улучшили работу
с памятью и до двух раз по сравнению с PHP 5.6 увеличили производительность,
включили стабильную поддержку 64-разрядных систем, улучшили работу
с исключениями, добавили безопасный генератор случайных чисел,
оператор объединения
с null (??), анонимные
классы и другие функции.
В более поздних выпусках серии PHP 7 появилось больше функций языка: короткий синтаксис присваивания значений списку переменных (7.1), объявление типа object параметрам и значениям возврата (7.2), новый гибкий heredoc- и nowdoc-синтаксис (7.3), типизированные свойства (7.4) и новый интерфейс внешних функций (7.4).
Первый выпуск версии состоялся в 2020. PHP 8.0 стал ещё одним крупным обновлением
языка PHP. Версия содержала много новых функций и оптимизаций, в которые вошли:
именованные аргументы,
объединение
типов, атрибуты,
продвижение параметров
конструктора до свойств класса, выражение
match
,
null-безопасный
оператор (?->
), новый оптимизирующий JIT-компилятор
и улучшения в системе типов, обработке ошибок и согласованности.
В более поздних выпусках серии PHP 8 представили новые функции языка, в том числе перечисления (8.1), файберы (8.1), классы только для чтения (8.2), Типы дизъюнктивной нормальной формы (DNF) (8.2) и типизированные константы классов (8.3).