Подборка свежих новостей, инструментов, видео и материалов из мира PHP.
Приятного чтения!
8 июня 1995 года Rasmus Lerdorf впервые объявил о PHP.
С днем рождения, PHP! 🎉🥳🎂
Не 28, конечно, но все равно достижение! Поздравляем!
Выпущена первая альфа-версия, дающая старт процессу выпуска PHP 8.3. Обновления будут выходить каждые две недели по определённому графику, а финальный релиз ожидается 23 ноября.
Заморозка функций ожидается 18 июля, а это значит, что некоторые изменения ещё могут попасть в релиз. На данный момент наиболее заметными являются следующие изменения:
❗ Всем пользователям настоятельно рекомендуется обновиться до этих выпусков безопасности.
Узнайте что произошло и могли ли вы пострадать.
Ознакомьтесь бесплатно с последними функциями, которые были добавлены в IDE до официального релиза.
Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:
В этом RFC Ilija Tovillo и Larry Garfield предлагают объявлять виртуальные свойства с помощью функций get/set.
Дизайн и синтаксис больше всего похожи на Kotlin, хотя в нем также прослеживается влияние C# и Swift.
1class User implements Named 2{ 3 private bool $isModified = false; 4 5 public function __construct(private string $first, private string $last) {} 6 7 public string $fullName { 8 // Override the "read" action with arbitrary logic. 9 get => $this->first . " " . $this->last;10 11 // Override the "write" action with arbitrary logic.12 set($value) => [$this->first, $this->last] = explode(' ', $value);13 }14}
Tim Düsterhus предлагает добавить атрибут #[\Override]. Этот атрибут, будучи применённым к методу, заставит движок проверять существование метода с таким же именем в родительском классе или любых реализованных интерфейсах.
1interface I { public function i(): void;2}3 4class P {5 #[\Override]6 public function i(): void {} // Fatal error: P::i() has #[\Override] attribute, but no matching parent method exists7}8 9class C extends P implements I {} // Всё хорошо 👍
Robert Landers предлагает добавить глобальную функцию nameof(). Эта функция позволит разработчикам быстро и легко получить имя практически любой определяемой пользователем переменной, свойства, константы или члена.
1echo nameof($variable); // variable2echo nameof($object->property); // property3echo nameof(Enum::Case); // Case4echo nameof(Object::Const); // Const5echo nameof(myFunction(...)); // myFunction6echo nameof(MY_CONSTANT); // MY_CONSTANT
wp-now – Локальная среда разработки от команды инженеров WordPress. Этот инструмент использует WebAssembly для работы PHP поверх веб-сервера Node.js. Он быстрее, чем окружения на базе Docker и может использоваться с любыми PHP-приложениями, хотя вам придётся придумать, как запустить свою базу данных.
Вышел PHP Monitor 6.0 – В этом крупном обновлении появился новый менеджер версий PHP, новый автономный режим, позволяющий приложению работать без установленного Valet и многое другое.
pmjones/AutoShel – Автоматически сопоставляет имена команд CLI с классами команд PHP в указанном пространстве имён, обращаясь к указанному методу main в этом классе для определения значений аргументов и параметров. Параметрами метода могут быть скалярные значения (int, float, string, bool) или массивы.
jolicode/castor – Программа для запуска задач и команд, созданная с упором на опыт разработчиков и построенная на PHP.
ProjektGopher/whisky – Простой и не зависящий от фреймворка CLI-инструмент для управления и внедрения git-хуков PHP-проекта в команде.
schranz-search/schranz-search – Поисковая абстракция над различными поисковыми системами, написанными на PHP. В настоящее время реализованы такие поисковые системы, как Elasticsearch, Opensearch, Algolia, Meilisearch, RediSearch, Solr и Typesense.
TestGenAI – Инструмент от Tomas Votruba, автора Rector, для генерации модульных тестов для PHP-кода.
librarianphp/librarian – Генератор статических сайтов и индексатор разметки, вдохновленный Hugo и DEV, написанный на PHP. Читайте историю создания.
В этом обновлении представлены различные новые возможности и улучшения, включая компонент Scheduler, интеграцию webhook с Mailer и Notifier, компонент AssetMapper, улучшения в Dependency Injection, улучшения DX, новые интеграции с Notifier, улучшения HttpClient, улучшения Clock и многое другое.
Попрощайтесь с проверками на null и исключениями: использование монады Maybe в Symfony
oroinc/twig-inspector – Инструмент добавляет возможность находить шаблоны и блоки twig, используемые для ускорения рендеринга HTML-страниц в процессе разработки.
Вышел laravel/octane 2.0.0 с поддержкой Roadrunner v3.
TomasVotruba/punchcard – Этот инструмент заменяет массивы конфигураций объектами с текущей типизацией, обеспечивая автозаполнение в IDE и предлагая другие преимущества.
Laravel Package Ocean – Каталог полезных пакетов Laravel.
nasirkhan/laravel-starter – Проект модульного стартового приложения, похожего на CMS, построенный с помощью Laravel 10.x.
🎬 PEST тесты в Laravel. Обзор фреймворка для написания тестов
Нажимая «Подписаться» я даю согласие на обработку персональных данных.
Мы заботимся о ваших данных и не будем злоупотреблять доверием.