самая новая версия php

Состоялся релиз языка программирования PHP 8.0

самая новая версия php. Смотреть фото самая новая версия php. Смотреть картинку самая новая версия php. Картинка про самая новая версия php. Фото самая новая версия php

26 ноября 2020 года состоялся релиз языка программирования PHP 8.0.

Сообщество разработчиков пояснило, что новая версия языка PHP содержит множество новых возможностей и оптимизаций, включая именованные аргументы, Union type, атрибуты, упрощенное определение свойств в конструкторе, выражение Match, оператор Nullsafe, добавлено включение JIT-компилятора и сделаны улучшения в системе типов, сравнении строк и чисел, обработке ошибок и консистентности.

Новая версия языка программирования PHP содержит ряд новых функций. Часть ранее используемых в предыдущих версиях PHP функций объявлены устаревшими.

Разработчики внесли в PHP 8.0 некоторые изменения, нарушающие обратную совместимость с предыдущими версиями языка программирования.

Для миграции с PHP 7.4.x на PHP 8.0.x создан специальный раздел на портале php.net. Разработчики просят ознакомиться с документацией и изменениями в PHP 8.0 перед переходом на новую версию, особенно в производственной среде.

Примечательно, что в начале июля 2020 года сервисный инженер и менеджер по проектам PHP в Microsoft Дейл Хирт (Dale Hirt) предупредил сообщество разработчиков PHP, что компания не собирается заниматься поддержкой новых версий PHP, включая 8.0 и выше, для Windows. Представитель сообщества разработчиков PHP ответил Microsoft, что они глубоко признательны компании за проделанную их специалистами работу по поддержке PHP на Windows на протяжении многих лет. Также в сообществе разработчиков PHP сообщили, что примут все необходимые меры, чтобы найти в ближайшее время альтернативный вариант для организации поддержки PHP 8.0 и выше для Windows, например, своими силами.

Источник

Статистика использования PHP

Первая ежегодная статистика 2021 используемых версий PHP от Packagist

Статистика использования PHP

Май 2021 г.

самая новая версия php. Смотреть фото самая новая версия php. Смотреть картинку самая новая версия php. Картинка про самая новая версия php. Фото самая новая версия php

Вы можете легко выполнить базовый тест на предмет того, поддерживают ли ваши зависимости PHP 8, используя конфигурацию платформы Composer, запустив, например:

Не забудьте вернуть изменения composer.json, когда закончите данные тесты. Вот сводная диаграмма, охватывающая все наблюдения версий за последние семь лет.

самая новая версия php. Смотреть фото самая новая версия php. Смотреть картинку самая новая версия php. Картинка про самая новая версия php. Фото самая новая версия php

Требования PHP в пакетах

Как и в прошлый раз, версии 7.3/7.4 продолжают набирать обороты, PHP 8 также имеет неплохой старт. Однако самой используемой версией PHP по-прежнему является 7.1. Согласно приведенным выше диаграммам, я бы сказал, что 7.3 по-прежнему является хорошим вариантом для любой библиотеки, которая хочет поддерживать поддержку большинства пользователей, но 7.4 предлагает вам приятные функции и почти на 50% адаптирована, так что это допустимый вариант для нового кода. Процент использование PHP 8 все еще слишком низкий, и вероятно, останется таковым до выпуска Ubuntu 22.04.

Требование PHP 7.2+ охватывает

90% пользовательской базы прямо сейчас, поэтому требовать меньшей версии уже больше нет необходимости, Composer 2.2, выходящий позже в этом году, скорее всего, потребует этого. Кстати, если вы не используете Composer 2, вам действительно стоит подумать об обновлении!

самая новая версия php. Смотреть фото самая новая версия php. Смотреть картинку самая новая версия php. Картинка про самая новая версия php. Фото самая новая версия php

Веб-разработчик со стажем программирования более 9 лет, всегда в процессе учебы и созидания.

Источник

Самая новая версия php

Вместо аннотаций PHPDoc вы можете использовать структурные метаданные с нативным синтаксисом PHP.

Объявление свойств в конструкторе RFC Документация

Меньше шаблонного кода для определения и инициализации свойств.

Union types RFC Документация

new Number ( ‘NaN’ ); // Нет ошибки

new Number ( ‘NaN’ ); // TypeError

Вместо аннотаций PHPDoc для объединенных типов вы можете использовать объявления union type, которые проверяются во время выполнения.

Выражение Match RFC Документация

Новое выражение match похоже на оператор switch со следующими особенностями:

Оператор Nullsafe RFC

Вместо проверки на null вы можете использовать последовательность вызовов с новым оператором Nullsafe. Когда один из элементов в последовательности возвращает null, выполнение прерывается и вся последовательность возвращает null.

Улучшенное сравнение строк и чисел RFC

При сравнении с числовой строкой PHP 8 использует сравнение чисел. В противном случае число преобразуется в строку и используется сравнение строк.

Ошибки согласованности типов для встроенных функций RFC

strlen ([]); // Warning: strlen() expects parameter 1 to be string, array given

strlen ([]); // TypeError: strlen(): Argument #1 ($str) must be of type string, array given

Большинство внутренних функций теперь выбрасывают исключение Error, если при проверке параметра возникает ошибка.

Компиляция Just-In-Time

PHP 8 представляет два механизма JIT-компиляции. Трассировка JIT, наиболее перспективная из них, на синтетических бенчмарках показывает улучшение производительности примерно в 3 раза и в 1,5–2 раза на некоторых долго работающих приложениях. Стандартная производительность приложения находится на одном уровне с PHP 7.4.

Относительный вклад JIT в производительность PHP 8

самая новая версия php. Смотреть фото самая новая версия php. Смотреть картинку самая новая версия php. Картинка про самая новая версия php. Фото самая новая версия php

Улучшения в системе типов и обработке ошибок

Прочие улучшения синтаксиса

Новые классы, интерфейсы и функции

Выше производительность, лучше синтаксис, надежнее система типов.

Для загрузки исходного кода PHP 8 посетите страницу downloads. Бинарные файлы Windows находятся на сайте PHP для Windows. Список изменений представлен в ChangeLog.

Руководство по миграции доступно в разделе документации. Пожалуйста, изучите его для получения подробного списка новых возможностей и обратно несовместимых изменений.

Источник

Версии PHP: зачем их обновлять и чем они различаются

самая новая версия php. Смотреть фото самая новая версия php. Смотреть картинку самая новая версия php. Картинка про самая новая версия php. Фото самая новая версия php

Почти 80% всех существующих сайтов, по данным W3Techs, работают на базе языка программирования PHP. Значительную их часть составляют сайты, созданные с помощью WordPress и других популярных CMS. Однако, несмотря на такую распространнёность, не все владельцы сайтов знают о необходимости переходить с устаревших версий PHP на более актуальные. Что отражается на качестве работы сайтов.

Кратко о версиях PHP

Какие версии PHP считаются актуальными, а какие — устаревшими? Чтобы разобраться в этом, рассмотрим этапы жизненного цикла версий этого языка:

Релиз. Выпускается новая версия PHP, которая прошла все этапы предварительного тестирования и подходит для использования в «боевых условиях».

Активная поддержка. В течение двух лет после релиза версия продолжает совершенствоваться. Выходят регулярные обновления, вносятся корректировки и исправляются баги. Обеспечивается полная безопасность версии.

Минимальная поддержка. Ровно через два года после релиза работа по развитию версии прекращается. В течение следующего года происходят только критические обновления, касающиеся серьёзных угроз безопасности.

Завершение жизненного цикла. Через год критических обновлений защиты версия перестаёт поддерживаться полностью. Однако ей можно продолжать пользоваться, но уже на свой страх и риск.

На момент публикации этого материала продолжают поддерживаться три версии PHP:

7.4 (дата релиза — 28 ноября 2019 года, самая актуальная версия);

7.3 (дата релиза — 6 декабря 2018 года, активная поддержка подходит к концу);

7.2 (дата релиза — 30 ноября 2017, активно не поддерживается, важные обновления безопасности скоро перестанут выходить).

Версии 7.1, 7.0 и все версии PHP 5 больше не обновляются. А уже в конце 2020 года самой актуальной станет версия 8.0.

А что насчёт PHP 6? Если вы не знаете, почему шестые версии здесь не упоминаются, то сейчас поясним.

PHP 6: строили, строили, но не построили

На разработку версии 6.0 было потрачено немало времени. Предполагалось, что самым важным нововведением в ней станет поддержка символов Юникода, благодаря которой возможности языка были бы расширены. Однако разработчики PHP 6 столкнулись со множеством трудностей, что вынудило их постепенно отказаться сначала от внедрения Юникода, а затем и вообще от запуска версии 6.0.

Пока шла работа над PHP 6, на эту тему было выпущено немало статей и книг. И представление о PHP 6 как о версиях языка с внедрённым Юникодом уже успело устояться в IT-сообществе. Поэтому новому поколению языка, пришедшему на смену PHP 5, было решено присвоить номер 7.

PHP 7: обновление, которое ждали больше 10 лет

Первая версия PHP 7 была представлена ещё в конце 2015 года, но до сих пор почти половина сайтов в мире, по информации WTechs, не перешли на PHP 7 и остаются на PHP 5. Каких возможностей лишены те, кто всё ещё не обновился?

С заботой о пользователях мобильных гаджетов разработчики также поработали над исполнением движка и уменьшили потребление памяти при работе PHP. Также с помощью Abstract syntax tree (AST) операционный код стал более производительным. И в целом код на PHP 7 стал чище, понятнее и удобнее.

Помимо внедрения нововведений, в версии 7.0 изменили или вовсе убрали устаревшую и ненужную функциональность. С одной стороны, это несколько нарушило совместимость языка с ранее созданным и необновлённым ПО. Но с другой, принятые меры позволили сделать настоящий прорыв в развитии PHP.

PHP 8: взгляд в будущее

Версия 8.0 активно разрабатывается в данный момент, но о ней уже кое-что известно. Планируется, что в новейших версиях PHP будет генерироваться меньше кода. Для этого будет использоваться технология JIT (Just in Time). С её помощью при выполнении приложения весь код будет не компилироваться заново, а частично заимствоваться из уже скомпилированных версий.

Компиляции станет меньше и благодаря технологии FFI (Foreign Function Interface), которая упрощает вызов функций, написанных на разных компилируемых языках программирования. Благодаря JIT и FFI производительность PHP 8 должна ощутимо повыситься по сравнению с PHP 7.

Релиз первой альфа-версии 8.0 намечен на лето этого года. Затем традиционно будут представлены несколько альфа- и бета-версий, а также релизов-кандидатов, после чего 3 декабря 2020 года ожидается выпуск финального варианта.

Кратко об обновлении PHP

Какую версию PHP лучше всего использовать? Конечно же, самую актуальную на данный момент. Тогда вы всегда будете получать:

О работе с PHP на VPS мы пока говорить не будем, так как для этого нужен отдельный материал. Поэтому дальше мы дадим рекомендации пользователям виртуального и специализированного хостинга.

Узнайте, какая версия PHP используется на вашем сайте. Эта информация доступна в настройках веб-сервера: например, на хостинге «Джино» они расположены здесь). Владельцы сайтов на WordPress могут увидеть текущую версию PHP в панели администратора, в разделе Инструменты / Здоровье сайта / Информация. Также вы можете написать этот скрипт, разместить его в файлах сайта и обратиться к нему из браузера:

В результате будет показана информация о версии.

Если ваша текущая версия PHP не входит в число поддерживаемых, взвесьте все «за» и «против» перед обновлением. Ведь чем старее скрипты вашего сайта, тем сложнее может быть перейти на поддерживаемую версию PHP. Тем, кто готов обновиться, нужно сделать следующее:

Убедитесь, что у вас сохранена свежая резервная копия файлов сайта.

Проверьте совместимость используемого ПО, фреймворков, библиотек, плагинов с выбранной вами версией PHP. Если что-то из этого не совместимо с ней, убирайте и заменяйте на более современные аналоги.

Измените версию PHP на хостинге, через настройки сервера в контрольной панели или через запрос в техподдержку.

После обновления протестируйте все функции сайта, при тестировании проверяйте лог на предмет «Fatal error» и других ошибок, которых раньше не было. Если все функции работают, а на страницах сайта появляются предупреждения PHP — отключите отображение ошибок.

Если после обновления возникли серьёзные нарушения в работе сайта, верните старую версию PHP. Разберитесь в проблемах сами или обратитесь за помощью к специалистам.

Чтобы переход на новую версию PHP никогда не составлял большого труда, постоянно адаптируйте свой сайт под последнюю поддерживаемую версию языка. А также используйте регулярно обновляемые плагины и ПО, избавляясь от всего, что не обновлялось больше года и не подлежит использованию с актуальными версиями PHP.

Источник

PHP 8. Что нового?

самая новая версия php. Смотреть фото самая новая версия php. Смотреть картинку самая новая версия php. Картинка про самая новая версия php. Фото самая новая версия php

Выход восьмой версии в ноябре 2020 — долгожданное событие для всего PHP-сообщества. Александр Пряхин, преподаватель онлайн-курса «PHP Developer», рассказал о самых ключевых важных нововведениях языка.

Статья является расшифровкой демо-занятия, который можно посмотреть по ссылке. Из нее вы узнаете о нововведениях в версии 8.0, что такое JIT и зачем он нужен, а также некоторые важные вещи про бенчмарки.

В настоящий момент актуальными являются 2 версии PHP — 7.4 и 8.0, версия 7.3 находится пока в режиме поддержки, более старые версии уже не поддерживаются. Версия 7.4 будет актуальна еще порядка двух лет, поэтому у вас будет достаточно времени, чтобы подготовиться к переходу на 8.0. Ниже вы можете увидеть график активной фазы и поддержки разных версий:

Немного о прошлом и PHP 7

Если вспоминать опыт перехода на 7 версию, то разница с «пятеркой», конечно, ошеломительная. Появилось много нововведений в плане движка именно PHP, он стал работать быстрее, выросла производительность, уменьшилось потребление по памяти:

Версия 5.5 была определенным компромиссом в ООП и энтерпрайзе. «Семерка» расставила все по местам, и сейчас PHP развивается в сторону Java: появляется много классической Java функциональности, причем язык остается интерпретируемым и компилируемым по своей сути.

Общий перечень значимых изменений, пришедших с «восьмеркой»:

Далее я остановлюсь подробнее на некоторых из них.

Именованные аргументы

У нас есть множество функций, которые принимают кучу аргументов на вход. Часто когда мы передаем то переменные, получается что мы только по названию переменной можем догадываться, что мы туда отдаем. Да, IDE научились нам подсказывать. Смотреть целый ворох параметров не всегда удобно. Но теперь можно указывать имя того параметра, который передается, что повышает читаемость кода.

Кстати, необязательно удалять запятую после последнего параметра. Это к ошибке не приведет.

Атрибуты

В других языках это называется аннотации. В предыдущих версиях использовались комментарии PHPDoc. В восьмерке теперь можно использовать структурированный способ указания метаданных в PHP.

Атрибуты предназначены только для добавления метаданных к классам и методам.

Они не должны и не могут использоваться для проверки ввода аргументов. У вас не будет доступа к параметрам, переданным методу в его атрибутах.

Объявление свойств в конструкторе

В «семерке» у нас был какой-нибудь класс, у которого был набор свойств. Мы их объявляли в шапке. Дальше в конструкторы приходили параметры, которые мы раскладывали по свойствам класса. При этом писалось очень много кода, что не всегда удобно, особенно если делать какой-нибудь паттерн-билдер, который предоставляет оболочку и ее постоянно приходится переписывать.

В «восьмерке» теперь можно писать синтаксисом: прямо в параметрах конструктора указывается, какие свойства будут у класса, какие у них дефолтные значения будут передаваться в конструктор. С одной стороны облегчает работу, но с другой — может ухудшиться читаемость. Причина этого то, что если раньше мы ожидали увидеть, какие свойства есть у класса в самом начале метода, то теперь это в конструкторе. Для того же билдера может пригодиться, но будет ли это распространено на все — покажет время, когда сообщество и команды будут пробовать внедрять это нововведение.

Выражение match

До «восьмерки» был switch, где при описании типов был риск попортить логику. В новой версии появился match. Внутри match version можно описать реакцию на каждый из входящих параметров. Причем здесь уже будут поддерживаться типы. Например, сюда может прийти значение строкового или float типа. И ошибок не будет, т.к. match использует строгое сравнение.

И стоит обратить внимание на union types, когда можно через вертикальную черту перечислять типы.

Выражение throw

Throw стал выражением. Это значит, что можно его кидать в стрелочных функциях, в тернарных операторах.

Например, есть вот такой тернарный оператор. Если там массив непустой, то сбрасываем и вызываем функцию reset. Если пустой, то теперь прямо здесь можно кидать исключение.

Nullsafe

Сокращение проверок на null. Для текучего интерфейса теперь можно ставить знак вопроса перед обращением к методу, и если один из цепочки вызовов вернул null, то вся цепочка становится null.

Saner string to number comparisons

При сравнении с числовой строкой PHP 8 использует сравнение чисел. Иначе число преобразуется в строку и используется сравнение строк.

В «семерке», если сравнивается 0 и строчка без цифр, получается true, в «восьмерке» теперь в таком случае вернется false, потому что строка не будет приводиться к числовому значению.

В плане типов это важное нововведение, т.к раньше, если вернулась строка, сравнивали ее с нулем, то теперь так делать нельзя.

Также во встроенных функциях теперь вместо Warning будет выдаваться TypeError в случае несоответствия типов.

Non-capturing catches

В PHP 8 можно ловить исключение в catch-блоке без переменной.

Иными словами, можно просто написать, какой тип исключений мы ловим, и если эту переменную никак не используем, то просто здесь говорим, что у нас выводится строка сообщением и все. То есть если мы не хотим никак обрабатывать эти данные, чтобы не засорять память, мы просто не используем здесь переменные.

Поиск по строкам

Вместо strpos можно задействовать str_contains

Использование ::class на объектах

Левоассоциативный тернарный оператор

Теперь такие вложенные «монстры» будут выдавать ошибку. Их давно уже пора было запретить, и наконец это сделали. Можно написать нормальные If-ы или использовать match.

Изменение приоритета оператора конкатенации

В восьмой версии поменялся приоритет оператора конкатенации. Если раньше сначала надо было конкатенировать, потом складывать, то сейчас конкатенация идет уже после сложения.

Валидация абстрактных методов в трейтах

JIT — главное нововведение PHP 8

JIT — компилятор Just In Time. Доступен с PHP 8 как расширение OpCache.

Компилирует операционный код в машинные инструкции во время выполнения.

Некоторые части кода будут не интерпретироваться в Zend VM, а выполнятся непосредственно на уровне процессора.

И собственно, польза JIT и состоит в том, чтобы обойти Zend VM. Дело в том, что Zend VM написан на C — это слой между Opcode и CPU. JIT использует Dynamic Assembler — библиотеку внутри Zend, чтобы наиболее часто используемые вещи транслировать в обход VM напрямую в процессор, за счет чего ускоряется работа ПО.

Получается вот такая схема работы:

То есть если мы видим, что у нас уже есть заранее скомпилированная история, мы сразу же кидаем в CPU и не передаем в Zend VM на выполнение.

Нововведение позволяет выигрывать InMemory операциям.

Бенчмарки

Проверим производительность версий 7.4 и 8.0 на виртуальной машине следующей конфигурации:

И скрипт, который генерирует 10 млн. рандомных хешей — просто для того, чтобы максимально нагрузить процессор.

По времени скрипт выполняется примерно одинаково, но «восьмерка» с включенным JIT ощутимо выигрывает по памяти.

Если говорить про веб-сайты, то тут для такого тестового стенда: VirtualBox, Homestead, 2GB RAM, 2x vCPU, SSD, WordPress, FakerPress, Nginx + PHP-FPM — будут следующие результаты:

Здесь по памяти сильно не выиграть потому что идет работа с базой данных, зато выигрыш идет по времени загрузки. Если на 7.4 страничка загружается за 0,161 с, то на 8.0 это занимает 0,04 с.

Что важно, JIT тут практически ни на что не влияет, т.к. вычислений в памяти минимум. В основном все ложится на input и output операции и начинает играть роль непосредственно оптимизация в новом движке.

Это основные моменты, которые пришли в PHP с восьмой версией. В записи демо-занятия вы найдете больше подробностей о схеме работы JIT и нововведениях. Демо-занятие проходит в рамках онлайн-курса «Backend-разработчик на PHP», где студенты осваивают экосистему PHP, учатся писать чистый код и решать реальные задачи, которые встают перед разработчиком middle-уровня.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *