Парад релизов: обновление языка — PHP 8.0, а также Xdebug 3, DBAL 3.0, Bref 1.0, Symfony 5.2, Flysystem 2.0. Первый принятый RFC для PHP 8.1, долгосрочная поддержка PHPUnit, порция полезных инструментов, подкасты, стримы, статьи.
Приятного чтения!
- PHP 8.0.0 — Долгожданный релиз языка доставлен строго по расписанию. Спасибо всем контрибьюторам и релиз-менеджерам Gabriel Caruso и Sara Golemon!
Облако контрибьюторов PHP 8 от php.watch
Наиболее заметные изменения:
• Именованные аргументы
• Атрибуты
• Объединенные типы
• Объявление свойств в конструкторе
• Выражение match
• Оператор nullsafe
• Улучшенное сравнение строк и чисел
• Ошибки согласованности типов для встроенных функций
• JIT
Максимально полный список изменений есть в документе php-src/UPGRADING
Документация по большинству изменений еще в процессе. Присоединиться к ее дополнению можно отправляя пул-реквесты в репозиторий php/doc-en.
А пока можно посмотреть обзоры релиза:
- php.watch: PHP 8.0: What's New and Changed
- stitcher.io: What's new in PHP 8
- stitcher.io: PHP 8: before and after
- PHP 8 — try out all new features — Обзор изменений с интерактивными демо от Marcel Pociot. Перевод.
- Использование PHP 8 в PhpStorm 2020.3, который выйдет на этой неделе.
- PHP 8 — Что нового?
Видео
- Обзор от Валентина Удальцова.
- Laracasts: PHP 8 Crash Course — Шикарный курс по PHP 8 от Jeffrey Way.
- Серия видеороликов по всем новым фичам от Spatie.
- Видеокурс по новым фичам от Marcel Pociot и BeyondCode.
С выходом 8.0 закончился период поддержки PHP 7.2, а PHP 7.3 перешел в режим только секьюрити фиксов. Вот инструкция как установить PHP 8.0 на Ubuntu, Debian, CentOS, macOS и в Docker.
Новости и релизы
- Xdebug 3 — Большое обновление популярного отладчика. Теперь он быстрее в работе и значительно проще в конфигурации.
Для старта достаточно одной опции xdebug.mode, а дефолтный порт сменен на 9003, чтоб не было конфликта с PHP-FPM. Подробнее в руководстве по обновлению.
Сравнительные бенчмарки Xdebug 2 и Xdebug 3 показывают значительный прирост производительности. Для сбора покрытия он даже быстрее, чем phpdbg, хоть и медленнее PCOV. - Bref 1.0 — Релиз инструмента, который облегчает создание serverless-приложений на PHP и AWS Lambda. Кстати, теперь с поддержкой WebSocket — удержание соединения берет на себя API Gateway.
- doctrine/dbal 3.0 — После 10 лет с выхода DBAL 2.0 наконец-то мажорное обновление популярной библиотеки для работы с базами данных. Короткий обзор есть в анонсе релиза. Главные изменения касаются отвязки DBAL от PDO. Все fetch-методы перенесены из класса
Statement
в новыйResult
. - thephpleague/flysystem 2.0 — Обновление библиотеки, абстрагирующей работу с файловыми системами. Что нового в версии 2.
- PHP 7.4.13
- PHP 7.3.25
- В твиттере продолжились споры о том, стоит ли поддерживать старые версии PHP в опенсорс инструментах. Никита написал, что инструменты, в которых минимальная версия PHP повышается слишком резко, в действительности приносят больше проблем на пути к обновлению PHP. .
Ранее эта же проблема обсуждалась, когда Марко Ocramius бампнул версию в своем пакете Ocramius/PackageVersions до 7.4 (уже и до 8.0). В результате чего в Composer 2 пакет заменили на форк composer/package-versions-deprecated.
Так или иначе, а PHPUnit 9 и PHPUnit 8.5 получат Life Support. Это значит, что в них будет гарантирована работа на PHP 7.3 (7.2 соответственно) и всех последующих версиях PHP.
PHP Internals
- [RFC] Explicit octal integer literal notation — Не успели выпустить PHP 8.0, а уже принят первый RFC для PHP 8.1! В следующей версии языка восьмеричные числа можно будет записывать с префиксом
0o
.0o16 === 14; // true 016 === 0o16; // true
Инструменты
- phpsandbox.io — Аналог codepen/jsfiddle только для PHP. Веб-сайт для быстрого тестирования и демонстрации кода. Кроме голого PHP можно сделать код на Laravel, ReactPHP или импортировать любой проект с Гитхаба.
- beyondcode/httpdump — Приложение на Laravel для отладки водящих HTTP-запросов (отладка веб-хуков и т.п.). Создает случайные URL и дампит в красивом виде все запросы к ним. Демо httpdump.app.
- clue/php-socket-raw — Легковесная ООП-обертка для низкоуровневого расширения сокетов PHP (ext-sockets).
- zenstruck/foundry — Фабрика для создания удобных фикстур с автодополнением в IDE для Symfony и Doctrine.
- spatie/backtrace — Обертка над
debug_backtrace()
для удобной работы со стеком вызовов. - nette/tracy — Инструмент для отладки: дебагбар, красивые ексепшены, логирование, профилирование, все в одном.
- JetBrains/phpstorm-attributes — В PhpStorm 2020.3 будут из коробки доступны несколько атрибутов PHP 8. Теперь они вынесены в отдельный пакет.
Symfony
- Symfony 5.2 — Список новых возможностей.
- Бенчмарки Symfony 5.2 на PHP 8.0 и 7.4.
- Неделя Symfony #726 (23-29 ноября 2020)
Laravel
- Защита от спама в Laravel приложениях
- Как отправлять уведомления в Laravel с помощью пакетов beyondcode/laravel-websockets и laravel/echo.
- Laravel Internals #1: 18 Nov, 2020 — Стрим с Nuno Maduro и James Brooks, участниками команды Laravel, о новостях в разработке фреймворка и инструментов экосистемы
- Laravel–Дайджест (9–22 ноября 2020)
Разное
- Front Line PHP — Книга про разработку на современном PHP от Brent Roose и Freek Van der Herten. В канале было как получить дополнительную скидку.
- Памятка по фишкам синтаксиса PHP 7.4 и 8
- Brent Roose пишет о том, как вести блог разработчику — Он стартовал свой stitcher.io s 2017 и сейчас блог посещает больше 1.5 млн пользователей в неделю.
- PHP Tools — назад в 90е — Запускаем и анализируем PHP 1.0.
- Как безопасно реализовать восстановление пароля на PHP.
- PHP 7.4 FFI: Что вам нужно знать
- API для QA: тестируем фичи без доступа к коду
- Ускоряем и стабилизируем автотесты на codeception + selenium
- Финальные классы в PHP, Java и других языках
- Сейчас я буду убеждать вас использовать статический анализ в PHP — Расшифровка подкаста Между Скобок № 11.
Аудио/Видео
- PHP 8: что нового, туда ли двигается, что будет дальше — Стрим с обзором PHP 8 от Валентина Удальцова (Пых), и ответами на вопросы от Никиты Попова и Дмитрия Стогова, двух топовых разработчиков PHP 8.
- Публичное собеседование: PHP-разработчик [Хекслет] — Пока мы с Валентином
прокрастинируемготовим открытое собеседование на PHP Point, можно посмотреть альтернативу от Хекслета. - Подкаст Remote Talk — В гостях Сергей Жук: про PHP, плохо ли на нём писать, книги в IT, подкаст «Между скобок».
- Видеозаписи с прошедших митапов:
- Запись с митапа PHP NN #3 – Опыт перехода с MySQL на Postgres на реальном проекте, советы по написанию кода и жизни после 30.
- Доклады от краснодарского PHP-сообщества: легаси, автотесты и работа с реляционныи БД.
- Как устроен деплой в Лайфхакере (Александр Нагорнов, Lifehacker.ru) – Опыт перехода на автодеплой.
- Вырастили легаси-мамонта и не смогли с ним жить (Андрей Мягков, Simtech Development) — Опыт переписывания внутреннего продукта на PHP.
- Чем страшны шутки со временем в PHP (Алексей Сундуков, ZeBrains) — Советы по работе с таймзонами в PHP.
- Как найти общий язык с API в микросервисах (Михаил Самаркин, Skyeng) — Создаем единый формат ответа об ошибках в микросервисах.
- PHP Release Radar — Episode 1: Composer 2.0 — Новый (видео-)подкаст про релизы в PHP-мире. В первом выпуске один из главных разработчиков композера Nils Adermann.
- PHP Internals News #72 :: PHP 8.0 Celebrations! — Каждый автор RFC в PHP 8 говорит по паре слов о своей фиче.
- PHP Internals News #71 — О том, что не попало в итоге в PHP 8:
• __toArray();
• перегрузка операторов;
• readonly свойства;
• компактное присвоение для объектов;
• return if ($condition);
• модификаторы доступа на чтение и запись для свойств.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку хабра или телеграм.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 192
Sway
Беда с переходом на PHP 8 началась с того что некоторые расширения не обновлены. Я столкнулся с 2мя:
Видимо придется какое-то время подождать =(
NotSlow
На github где-то читал, что поправили и дествительно этот:
github.com/Imagick/imagick/archive/master.zip
собирается и работает. Но с ним какие-то другие косяки там были из-за которых использовал только тот который с pecl.php.net
Ждемс полноценного обновления…
ioncube тоже пока нет под php8
caballero
Стремная праетика переходить нп продукт с релизом *.0.0. Следует дождатся хотя бы *.0.1 когда уже массово погоняют и будут пофиксены первые серьезные проблемы.
Sway
Так я и не говорил про production версию =) В любом случае нужно будет обновлять код если найдутся несовместимости, а это тоже время. Пока оттестируешь, как раз выйдет пара обновлений.
polyanin
ssh2
vlreshet
Возможно я криворукий, но memcache тоже не удалось запустить на свежей восьмой версии. Я, правда, всего пол часика попытался. Но тем не менее.
pronskiy Автор
Вот тут список расширений со статусом совместимости с PHP 8:
https://blog.remirepo.net/post/2020/09/21/PHP-extensions-status-with-upcoming-PHP-8.0
imagick и ssh2 уже совместимы, но не выпущены релизы.
А вот memcache и ioncube действительно не совместимы. Для memcache есть ветка так что вероятно будет в обозримом будущем.
vlreshet