Перейти к содержимому
DedicatedPHP Контакт

Эволюция PHP как языка программирования от версии 1 до версии 8.

Узнайте, как развивался язык программирования PHP.

Эволюция PHP как языка программирования от версии 1 до версии 8.

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 является важной частью работы системы. безопасное, высокопроизводительное веб-приложение .

Хотите применить эти идеи в своем проекте?Давайте обсудим вашу PHP-платформу.
Посмотреть связанные услуги