какая версия php сейчас актуальна

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

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 в 2021 году

Если вы новичок в веб-программировании, возможно стоите на распутье и сомневаетесь куда двигаться дальше, то вам определенно стоит почитать этот пост

Так же, как в 2020 и 2019 годах подведем итоги о том, стоит ли изучать PHP в 2021 году.

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

PHP 8 и дальше

Новая основная версия PHP 8 появилась в конце прошлого года. Я много писал постов по этой теме, и не буду повторять все это здесь. В принципе все как обычно, производительность только улучшается, и тесты это доказывают.

Есть JIT, который, улучшает производительность некоторых проектов, а также предварительная загрузка, которая имеет в целом положительное влияние, если вы не используете shared хостинг.

Я думаю, что такой функционал, как атрибуты (также известные как «аннотации»), именованные аргументы и объявляемые свойства в конструкторе также заслуживают упоминания, поскольку они определенно способствовали тому, что PHP 8 стал таким замечательным выпуском.

Тем временем основная команда уже работает над следующей версией PHP 8.1, которая будет выпущена где-то к концу 2021 года. На данный момент наиболее важными функциями являются перечисления (Enum) и файберы (Fiber).

Год за годом основной команде удается представить сообществу новый стабильный выпуск, наполненный множеством функций и качественных улучшений. Путь обновления также не так уж и сложен. Я уже обновил некоторые из моих собственных проектов с PHP 7.4 до PHP 8, и это заняло от 30 до 60 минут на проект. На самом деле нет никаких веских причин оставаться на старых версиях!

Система типов PHP

К сожалению, дженерики по-прежнему не поддерживаются. Есть несколько серьезных препятствий этому, особенно с учетом того, что мы все еще имеем дело с языком с динамической типизацией. О возникших проблемах Никита Попов написал здесь. А вот, например, автор блога stitcher.io Брент описал подход, который был бы простым выходом: поддерживать дженерики, не во время выполнения, а полагаться на статический анализ. Это так же потребует изменения мышления в сообществе PHP в целом. Может быть, однажды это станет жизнеспособным вариантом, но пока что нет.

Читайте также:  что делать при жестком дыхании у ребенка

Асинхронный PHP

Несмотря на то, что сами файберы могут быть лишь маленькой шестеренкой в ​​том, что является большой асинхронной машиной, RFC снова вызвал интерес в асинхронном сообществе, чему мы можем только радоваться. Популярность асинхронных фреймворков, таких как Amphp и ReactPHP, растет, и недавно тот же Laravel объявил о встроенной поддержке Swoole и RoadRunner.

Composer 2.0

Говоря о композере, мне нравится измерять текущее состояние экосистемы PHP, просматривая доступные пакеты с течением времени. В прошлом году я говорил о ±25 миллионах загрузок в день, сегодня это число увеличилось более чем вдвое, и мы уже видим ±60 миллионов загрузок в день.

Давайте закончим напоминанием обо всем, что было добавлено в PHP за последние годы. Если вы не следите за его развитием, вам действительно стоит изучить этот список. Я думаю, что это показывает рост сообщества и основной команды разработчиков за последние годы, и я уверен, что это еще не все.

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

Источник

Актуален ли PHP в 2021 году?

Фокус внимания давно переместился с PHP на JavaScript и Python. Тем не менее у него выходят новые версии, а тесты производительности говорят о неплохом прогрессе. Насколько актуален PHP сегодня? Под катом — размышления разработчика, который продолжает отдавать ему предпочтение.

Краткая история PHP

PHP разработал Расмус Лердорф в 1994 году. Лердорф создал набор скриптов, которые отслеживали посещения его онлайн-резюме, и назвал их Personal Home Page Tools («инструменты личной домашней страницы»). Со временем название превратилось в PHP Tools. Он пополнял этот набор новыми инструментами, а потом решил переписать их: добавил взаимодействие с базами данных и многое другое. Так набор превратился во фреймворк.

Дальше эти инструменты продолжали эволюционировать в еще более сложные примитивы, а после публикации кода в open source в 1995 году число пользователей стало расти заметно быстрее. Если вас интересуют подробности этой истории, вы можете найти их на официальном сайте PHP.

Последняя версия языка сейчас — PHP 8.0.

А что не так с PHP?

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

Слабая типизация

Лично мне в этом языке не нравится слабая типизация, позволяющая сочетать разные типы и выполнять их неявные преобразования. Рассмотрим такой пример:

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

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

Отсутствие пространств имен

Поддержка пространств имен была добавлена в PHP в версии 5.3. В более старых проектах приходилось создавать собственные типы пространств имен, в основном при помощи добавления пространств имен к названиям классов и методов. Из-за этого приходилось использовать повсюду абсурдно длинные имена.

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

Противоречивые функции стандартной библиотеки

Не буду говорить, что стандартная библиотека языка плоха, но она могла бы быть и получше. Язык довольно сильно совершенствуется, однако первым версиям стандартной библиотеки, на которые до сих пор ссылаются и поддерживают для обратной совместимости, не хватает целостности. Хоть это и небольшая проблема, она означает, что многие функции стандартной библиотеки имеют разные правила наименования, имена и порядок аргументов. Все это усложняет выявление их значений по умолчанию и поведение.

Читайте также:  какая бывает ширина укрывного материала

Вот некоторые примеры противоречивости наименований в строковых методах из документации:

Суперглобальные переменные

И что хорошего в PHP?

Язык на многих произвел плохое впечатление, но за последние годы он сильно улучшился. Благодаря релизу PHP 7 язык модернизировался, в его основе появилось множество приятных особенностей, повысились скорость работы и удобство пользования.

Type hints

Это один из моих любимых способов модернизации старого кода на PHP: использование необязательных type hints, выполняющих преобразование типов, а также обеспечивающих документацию кода. Рассмотрим простую функцию:

Если добавить type hints, код станет таким:

Просто увидев сигнатуру функции, мы понимаем, что она ожидает строковое значение и вернет булев-результат. Можно добавить, что здесь полезно было бы применить правильное наименование, однако эти type hints гарантируют, что значения будут именно указанных типов и предоставляют IDE возможность автодополнения и статического анализа с предупреждениями и другими полезными вещами.

С версии 7.4 PHP позволяет задавать и типизированные свойства для классов:

Это означает, что у объектов Person будут строковые имя и фамилия, возраст в integer и допускающая пустое значение строка для должности. Чем больше классов — тем полезнее эта возможность.

Улучшения синтаксиса

В поздних версиях PHP появилось много синтаксических улучшений:

именованные аргументы: array_fill(start_index: 0, num: 100, value: 50);

разделитель числовых литералов: 299_792_458

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

Constructor promotion

Взгляните на класс Person :

Вместо этого избыточно многословного кода PHP 8 поддерживает возможность написания такого кода:

Nullsafe-оператор

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

Именно так писали логику в старых версиях PHP для учета проверок на null. Новый nullsafe-оператор позволяет свести это к такому коду:

Разве не великолепно?

Объединенные типы

Хоть для меня это и не самая любимая штука, она все равно ценна в случаях, когда уже есть несколько возможных типов без type hints. Объединения позволяют определять в качестве вариантов несколько типов значений. Благодаря объединениям становится работающим вот такой код:

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

Производительность

У меня нет четких данных для сопоставления производительности с другими языками, но по сравнению с предыдущими версиями скорость работы кода PHP заметно выросла. В дополнение к рывку, сделанному PHP 7 по сравнению с PHP 5.6, все последующие релизы вносили улучшения, и эта тенденция продолжается. Проведенные Phoronix бенчмарки демонстрируют, что последняя версия PHP 8 в три с лишним раза быстрее PHP 5.6. В посте по ссылке выше есть подробные тесты, так что их стоит изучить.

В дополнение к этим бенчмаркам Kinsta также провела реальные испытания с WordPress. Вот результат для WordPress 5.3.

Точные цифры замеров таковы:

Результаты бенчмарка WordPress 5.3 с PHP 5.6: 97,71 запросов/с

Результаты бенчмарка WordPress 5.3 с PHP 7.0: 256,81 запросов/с

Результаты бенчмарка WordPress 5.3 с PHP 7.1: 256,99 запросов/с

Результаты бенчмарка WordPress 5.3 с PHP 7.2: 273,07 запросов/с

Результаты бенчмарка WordPress 5.3 с PHP 7.3: 305,59 запросов/с

Результаты бенчмарка WordPress 5.3 с PHP 7.4: 313,42 запросов/с

Читайте также:  Что такое планировка земельного участка

Пока в эти бенчмарки не включен PHP 8, однако видно, что даже версия 7.4 способна обрабатывать в три раза больше запросов по сравнению с 5.6, и это серьезное улучшение.

Вывод

В целом PHP за последние годы значительно улучшили, и с ним стало удобно работать. Я профессионально пишу на Golang, PHP и Python, но больше всего опыта у меня в PHP, поэтому я могу быть пристрастен. Однако, по моему мнению, PHP нашел идеальный баланс между гибкостью и поддерживаемостью.

В нем есть необходимые инструменты для реализации безумных вещей, гибкая система типов, позволяющая постепенно улучшать легаси-код, он достаточно быстр для большинства применений, его продолжают совершенствовать, а еще у него потрясающее сообщество open source.

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

Источник

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

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

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

Май 2021 г.

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

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

Требования 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, вам действительно стоит подумать об обновлении!

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

Источник

PHP-Дайджест № 193 (16 – 30 ноября 2020)

Парад релизов: обновление языка — PHP 8.0, а также Xdebug 3, DBAL 3.0, Bref 1.0, Symfony 5.2, Flysystem 2.0. Первый принятый RFC для PHP 8.1, долгосрочная поддержка PHPUnit, порция полезных инструментов, подкасты, стримы, статьи.

Облако контрибьюторов PHP 8 от php.watch

Наиболее заметные изменения:
• Именованные аргументы
• Атрибуты
• Объединенные типы
• Объявление свойств в конструкторе
• Выражение match
• Оператор nullsafe
• Улучшенное сравнение строк и чисел
• Ошибки согласованности типов для встроенных функций
• JIT

Максимально полный список изменений есть в документе php-src/UPGRADING

Документация по большинству изменений еще в процессе. Присоединиться к ее дополнению можно отправляя пул-реквесты в репозиторий php/doc-en.

С выходом 8.0 закончился период поддержки PHP 7.2, а PHP 7.3 перешел в режим только секьюрити фиксов. Вот инструкция как установить PHP 8.0 на Ubuntu, Debian, CentOS, macOS и в Docker.

Новости и релизы

Для старта достаточно одной опции xdebug.mode, а дефолтный порт сменен на 9003, чтоб не было конфликта с PHP-FPM. Подробнее в руководстве по обновлению.

PHP Internals

Инструменты

Symfony

Laravel

Разное

Аудио/Видео

Спасибо за внимание!

Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку хабра или телеграм.

Больше новостей и комментариев в Telegram-канале PHP Digest.

Источник

Сайт для любознательных читателей