PHP, также известный как гипертекстовый препроцессор, — это серверный скриптовый язык. Он в основном используется для веб-разработки и был впервые выпущен в 1995 году Расмусом Лердорфом. С тех пор PHP пережил большое количество версий, каждая из которых содержала значительные улучшения и изменения. Давайте рассмотрим эволюцию PHP от его создания до PHP 8, последней известной версии по состоянию на сентябрь 2021 года.
Версии PHP и основные изменения
PHP/FI (Персональная домашняя страница / Интерпретатор форм) 1.0 (Выпущен в 1995 году)
Первая версия PHP, известная тогда как PHP/FI, была разработана Расмусом Лердорфом. В то время PHP представлял собой простой набор CGI-скриптов на Perl, которые помогали Лердорфу вести своё личное резюме и собирать определённые данные. Только после того, как Лердорф объединил эти скрипты с C, создав PHP/FI, PHP стал продуктом, доступным для использования другими.
PHP/FI 2.0 (выпущен в 1997 году)
Вторая версия PHP/FI представила ряд функций, заложивших основу для будущего развития PHP. К этим функциям относятся поддержка форм и файлов cookie, а также возможность встраивания PHP-кода непосредственно в HTML.
PHP 3 (выпущен в 1998 году)
PHP 3, разработанный Энди Гутмансом и Зеевом Сураски, представлял собой полную переработку языка, заложив большинство известных нам сегодня синтаксических правил. Впервые в него была включена поддержка объектов, и это была первая версия, которая действительно выглядела как полноценный язык программирования.
PHP 4 (выпущен в 2000 году)
В версии PHP 4 был представлен движок Zend — программное обеспечение, интерпретирующее код PHP. Это привело к повышению производительности, а также к улучшенной поддержке объектно-ориентированного программирования. Кроме того, были добавлены такие функции, как сохранение сессии и буферизация вывода.
PHP5
В PHP 5 были внесены значительные улучшения в объектно-ориентированное программирование, включая добавление абстрактных классов, интерфейсов, клонирование объектов и обработку исключений. Также была улучшена поддержка XML и добавлена поддержка SQLite.
PHP 5.0 (выпущен в июле 2004 г.)
- Улучшения объектно-ориентированного программирования Введена полная объектная модель, включающая модификаторы доступа, интерфейсы, клонирование и исключения.
- Улучшена обработка XML. Добавлено расширение SimpleXML для упрощения работы с XML.
- SQLite: В состав системы был включен SQLite, облегченный механизм баз данных SQL. В PHP по умолчанию.
PHP 5.1 (выпущен в ноябре 2005 г.)
- Поддержка PDO (PHP Data Objects): Предоставляет интерфейс для доступа к базам данных в PHP.
- Улучшения производительности Включает в себя добавление сборщика мусора для устранения циклов обмена ссылками.
PHP 5.2 (выпущен в ноябре 2006 г.)
- Введение в функцию filter_list() Помогает безопасно проверять и фильтровать данные.
- Улучшения производительности и стабильности. Включает обновление библиотеки PCRE, которое улучшило совместимость и производительность.
PHP 5.3 (выпущен в июне 2009 г.)
- Пространства имен Они позволяют лучше организовать код в пакетах.
- Поздние статические переплеты : Улучшает наследование кода в PHP.
- Замыкания (анонимные функции) Теперь функции можно создавать без указания конкретного имени.
- Улучшения в обработке исключений Вводится возможность использования нескольких исключений типа catch.
- Поддержка вложенного тернарного синтаксиса без необходимости использования скобок.
PHP 5.4 (выпущен в марте 2012 г.)
- Черты Позволяет повторно использовать код в языках программирования с одним предком, что является разновидностью множественного наследования.
- Краткий синтаксис массива Теперь массивы можно объявлять в квадратных скобках [] вместо использования функции array().
- Улучшенное управление памятью : Снижает общее потребление памяти.
PHP 5.5 (выпущен в июне 2013 г.)
- Генераторы Позволяет легко создавать итераторы без необходимости реализовывать интерфейс итератора.
- Наконец, ключевое слово Это помогает гарантировать, что определенный фрагмент кода всегда будет выполнен, независимо от того, будет ли выброшено исключение.
- Поддержка списков в цикле foreach.
PHP 5.6 (выпущен в августе 2014 г.)
- Разбор аргументов Позволяет использовать ... для распаковки аргументов из массива или объекта Traversable.
- Используйте функцию и используйте константу. Импорт функций и констант в пространство имен.
- Улучшения в соответствии с требованиями GMP Позволяет использовать номера GMP в функциях, принимающих целые числа или строки.
- Улучшения в области безопасности Добавлена поддержка сертификатов для подписи открытым ключом.
PHP 7 (выпущен в 2015 году)
В PHP 7 был достигнут огромный скачок в производительности благодаря внедрению механизма выполнения Just In Time (JIT). Дополнительные возможности включают возвращаемые типы, объявление скалярных типов, оператор слияния с нулевым значением и возможность определения константных массивов с помощью функции define().
PHP 7.0 (выпущен в декабре 2015 г.)
- повышение производительности Новый движок PHPNG (Zend Engine 3) повышает производительность, снижает потребление памяти и упрощает обработку ошибок.
- Объявления типов возвращаемых значений Эта функция позволяет указать тип значения, которое должна возвращать функция.
- Объявления скалярных типов Позволяет принудительно задавать тип параметров в функциях (int, float, string, bool).
- Оператор нулевого слияния (??) Этот оператор упрощает проверку на наличие нулевых значений.
- Оператор космического корабля (<=>) Введено для облегчения сравнения двух выражений.
PHP 7.1 (выпущен в декабре 2016 г.)
- Нулевые типы Допускается указание на то, что возвращаемое значение функции может быть определенного типа или равно null.
- Пустые функции Тип `void` вводится для функций, которые ничего не возвращают.
- Видимость константы класса Теперь вы можете определять константы класса как public, private или protected.
- Итерируемый псевдотип Введите тип итерируемого объекта для параметров и типы возвращаемых значений функций.
PHP 7.2 (выпущен в ноябре 2017 г.)
- Либсадиум Эта библиотека для современной и безопасной криптографии теперь включена по умолчанию.
- Улучшения типов Добавлен тип "object", а также разрешено использование абстрактных типов в объявлениях типов параметров и возвращаемых типов.
PHP 7.3 (выпущен в декабре 2018 г.)
- Запятые в конце вызовов функций В вызовах функций допускаются запятые в конце строк.
- повышение скорости работы JSON-кода Улучшена производительность функций json_encode() и json_decode().
- улучшения GC Вносит улучшения в работу сборщика мусора, что приводит к снижению потребления памяти.
PHP 7.4 (выпущен в ноябре 2019 г.)
- Стрелочные функции Эта функция позволяет создавать анонимные функции более лаконичным способом.
- Типизированные свойства Свойства класса теперь могут иметь объявленные типы.
- Распаковка внутри массивов Эта функция позволяет распаковывать массивы внутрь других массивов.
- Слабые ссылки Позволяет сохранять ссылки на объекты, не препятствуя их уничтожению сборщиком мусора.
PHP 8 (выпущен в 2020 году)
В версии PHP 8 появилось множество интересных новых функций, таких как компиляция Just-In-Time (JIT), которая ещё больше повышает производительность. Также были добавлены типы данных Union, выражения сопоставления, оператор NULL-безопасности, именованные аргументы и атрибуты, а также многие другие функции.
А где же шестая версия?
Версия для PHP 6 действительно существовала как проект, но так и не был официально выпущен. Основная цель PHP 6 заключалась в обеспечении нативной поддержки Unicode — стандарта, позволяющего обрабатывать текст на любом языке мира.
Однако разработчики столкнулись с рядом проблем. проблемы в процессе разработки Внедрение полной поддержки Unicode в ядро PHP оказалось гораздо более сложной задачей, чем ожидалось. Кроме того, производительность предварительной версии PHP 6 с поддержкой Unicode была значительно ниже.
Из-за этих трудностей и задержек в разработке проект PHP 6 в итоге был заброшен. Разработчики решили пропустить цифру 6 при наименовании следующей основной версии PHP, чтобы избежать путаницы с провалившимся проектом PHP 6. Поэтому после PHP 5.6 следующей основной версией стала PHP 7.0.
PHP 7 включал в себя многие функции, запланированные для PHP 6, но не содержал встроенной поддержки Unicode в ядре языка. Вместо этого PHP 7 сосредоточился на повышении производительности и добавлении новых функций в язык.
Давайте поговорим о производительности, стоит ли обновляться?
Эволюция языка программирования принесла не только новые возможности, но и особое внимание уделялось повышению производительности с каждой новой версией:
- PHP/FI 2.0 - Низкий Он не был оптимизирован для повышения производительности, поскольку основное внимание уделялось возможностям форм и взаимодействию с базами данных.
- PHP 3 - Улучшена версия PHP/FI 2.0. Переработка PHP-движка позволила повысить производительность и эффективность.
- PHP 4 — Улучшенная версия PHP по сравнению с PHP 3. Внедрение движка Zend обеспечило дальнейшее повышение производительности.
- PHP 5.0 — Аналогично PHP 4. Хотя он включал значительные улучшения в объектно-ориентированном программировании и поддержке XML, производительность была схожа с PHP 4.
- PHP 5.1 - 5.6 — С каждым небольшим релизом наблюдаются улучшения, особенно в части оптимизации производительности и усовершенствования сборки мусора.
- PHP 7.0 — Значительно улучшена по сравнению с PHP 5.X благодаря внедрению Zend Engine 3. Производительность PHP 7.0 может быть в два или три раза выше, чем у PHP 5.6, для многих приложений.
- PHP 7.1 - 7.4 — Каждая последующая минорная версия вносила улучшения в производительность, хотя и не такие существенные, как переход с PHP 5.6 на PHP 7.0.
- PHP 8.0 — Улучшена версия PHP по сравнению с 7.4. Добавление компиляции Just-In-Time (JIT) может повысить производительность в некоторых случаях, хотя для типичных веб-приложений это улучшение может быть незначительным.
А что насчет безопасности? Что вы можете мне сказать?
PHP/FI 2.0 - PHP 3
- В этих ранних версиях безопасность не была приоритетом, и многие функции безопасности не были включены.
PHP4
- В PHP 4 был введен параметр safe_mode, предназначенный для предотвращения некоторых типов атак, но в конечном итоге признанный неэффективным, он был объявлен устаревшим и удален в PHP 5.4.
PHP5
В PHP 5 был внесен ряд улучшений в области безопасности:
- Функция «Магические цитаты»: была введена для предотвращения SQL-инъекций, но подверглась критике за непоследовательное поведение и в конечном итоге была отключена по умолчанию в PHP 5.3, а затем удалена в PHP 5.4.
- Улучшения в обработке ошибок: в PHP 5 были введены исключения, которые улучшают обработку ошибок и могут помочь предотвратить утечку конфиденциальной информации.
- PDO (PHP Data Objects): Введенные в PHP 5.1, они предоставляют интерфейс для доступа к базам данных, включая подготовленные запросы, которые могут помочь предотвратить SQL-инъекции.
PHP 5.2
- Фильтр ввода: В PHP 5.2 было представлено расширение фильтра, позволяющее безопасно и согласованно проверять и фильтровать входные данные.
PHP 5.3
- PHAR (PHP Archive): В PHP 5.3 появилась поддержка PHAR — способа упаковки целых PHP-приложений в единый архив. Хотя это само по себе не является улучшением безопасности, PHAR включает в себя ряд мер защиты от атак, таких как возможность проверки цифровых подписей.
PHP 5.6
- Улучшение безопасности SSL/TLS: в PHP 5.6 добавлена поддержка сертификатов подписи с открытым ключом и внесены улучшения в настройки SSL/TLS по умолчанию.
PHP 7
В PHP 7 были отключены или удалены некоторые устаревшие и потенциально небезопасные функции и возможности:
- Удалены несколько небезопасных хеш-функций, таких как crypt() и hash().
- Автоматическая десериализация отключена для предотвращения уязвимости внедрения объектов.
- Введены объявления типов и типов возвращаемых значений для предотвращения ошибок типов, которые могут быть использованы злоумышленниками.
PHP 7.2
- Улучшение безопасности паролей: в PHP 7.2 появилась функция password_hash() с поддержкой Argon2, более безопасного алгоритма хеширования паролей.
PHP 8
В PHP 8 не было представлено много новых функций безопасности, но он продолжил тенденцию PHP 7 по удалению или отключению устаревших и потенциально небезопасных функций.
Заключение
Обновление до последней версии PHP часто предоставляет следующие возможности: несколько преимуществ Во-первых, обновления часто включают в себя улучшения производительности Это может ускорить работу ваших веб-приложений. Во-вторых, более новые версии часто включают в себя новые функции Это может сделать код более эффективным, а также упростить его написание и сопровождение. Во-третьих, новые версии PHP часто включают улучшения безопасности, которые могут защитите свое приложение защита от атак и уязвимостей.
Однако важно также отметить, что обновление до новой версии PHP может привести к следующим последствиям: проблемы Существующий код, возможно, потребуется пересмотреть или рефакторизовать для поддержки новых функций или для того, чтобы избежать использования функций, которые были отключены или удалены. В любом случае, обновление PHP является важной частью работы системы. безопасное, высокопроизводительное веб-приложение .



