Подборка свежих новостей, инструментов, видео и материалов из мира PHP.
Приятного чтения!
❗Это обновления безопасности с исправлениями CVE-2023-0568, CVE-2023-0567 и CVE-2023-0662.
Если вы всё ещё используете PHP 7.4, в репозитории Remi есть обновления с исправлениями безопасности. Однако не забывайте, что этот репозиторий - проект, который делается по мере сил и зависит от того, сколько свободного времени Remi может ему уделять. Это означает, что нет никаких гарантий относительно будущих обновлений, так как он предназначен только для того, чтобы дать пользователям больше времени для перехода на новую версию.
Одним из основных изменений, объявленных командой, было добавление деклараций типов во всём наборе пакетов Laravel. Это привело к проблемам у пользователей при работе с заглушками контроллеров. И через некоторое время команда Laravel решила полностью убрать декларации типов из них.
После двух лет разработки Sebastian Bergmann и команда PHPUnit объявили о выходе крупного релиза.
Этот релиз для PHPUnit - то же самое, что PHP 7 для PHP: масштабная чистка, рефакторинг и модернизация, которая закладывает основу для будущего развития.
В нём появились атрибуты, статические провайдеры данных, меньше магии уведомления об ошибках и более простая система событий.
Одним из внутренних изменений в этом выпуске является новая система событий, которая затрагивает разработчиков расширений PHPUnit.
Стиль кодирования PER призван облегчить чтение кода и избавить от вопросов типа «нужно ли добавить пробел?» или «должно ли это утверждение быть в отдельной строке?», позволяя тратить время на то, что действительно важно.
PER - это скользящий документ, что означает, что вместо создания нескольких PSR, команда будет помечать несколько версий.
Версия 1.0.0 была копией PSR-12. Следующая версия будет направлена на обновление спецификации для включения последних возможностей PHP и исправление любых проблем.
Вы можете оставить свой отзыв на вкладке GitHub Issues по адресу https://github.com/php-fig/per-coding-style.
Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:
Ilija Tovilo и Larry Garfield получили необходимые отзывы и, возможно, представят пересмотренную версию этого RFC, а пока они сосредоточатся на предложении добавить хуки и аксессоры для свойств.
1class Foo { public function __construct( 2 public readonly DateTime $bar, 3 ) {} 4 5 public function __clone() 6 { 7 $this->bar = clone $this->bar; 8 // Это приведёт к фатальной ошибке в PHP <8.2 9 // и будет работать в PHP 8.3+10 }11}12 13$foo = new Foo(new DateTime());14$foo2 = clone $foo;
George Peter Banyard предлагает сделать поведение операторов ++ и -- согласованным.
Nicolas Grekas и Ilija Tovilo предлагают передавать область видимости в магические аксессоры, чтобы сделать ее получение тривиальным.
В ходе обсуждения участники сообщества предложили добавить отдельную функцию, которая корректно возвращает область видимости, так что авторы RFC могут склониться к этой идее.
Benas Seliuginas и Máté Kocsis предлагают разрешить объявлять типы для содержимого классов и интерфейсов.
Вот несколько примеров кода, демонстрирующих проблему и то, как типизированные константы могут помочь:
1interface I { 2 const TEST = "Test"; // Мы можем наивно предположить, что I::TEST - это строка. 3} 4 5class Foo implements I { 6 const TEST = []; // Но это может быть массив... 7} 8 9class Bar extends Foo {10 const TEST = null; // Или null11}
Thomas Hruska реализовал множество функций для улучшения качества жизни в PHP и это первый RFC, который привносит некоторые из них в ядро для оптимизации работы с подстроками.
Уже сейчас вы можете попробовать новые функции из предстоящего крупного релиза, такие как: - Возможность запуска PHP-скриптов на 3v4l.org. - Улучшение производительности, включая общие индексы для популярных пакетов PHP. - Множество улучшений в новом пользовательском интерфейсе. - Пользовательские проверки поиска и замены на основе Regexp.
crwlrsoft/crawler 1.0 – Библиотека для быстрой разработки краулеров и скреперов.
olvlvl/composer-attribute-collector – Удобный и практически незатратный способ получения целей атрибутов PHP 8.
brick/json-mapper – Отображает данные JSON в сильно типизированные DTO PHP.
boxblinkracer/phpunuhi – Простой композитный фреймворк для проверки и управления переводами.
markrogoyski/itertools-php – Пакет предоставляет огромный набор функций для работы с итерируемыми коллекциями. Его главное отличие от других библиотек коллекций, таких как Laravel или Doctrine collections, заключается в том, что он не преобразует итерируемые коллекции в массивы. Это означает, что он должен быть гораздо более эффективным с точки зрения использования памяти при работе, например, с генераторами.
Crell/mastobot – Простой бот для составления личного расписания для аккаунтов Mastodon.
paratestphp/paratest – Вышла версия 7.0 поддержки параллельного тестирования PHPUnit.
TheDragonCode/benchmark – Простой инструмент для сравнения времени выполнения двух разных блоков кода.
parsica-php/parsica – Конструктор парсеров с необычным синтаксисом:
1$parser = between(char('{'), char('}'), atLeastOne(alphaChar()));
Sammyjo20/Saloon 2.0 – Идея этого пакета заключается в том, чтобы упростить создание SDK для сервисов или организовать доступ к различным API в едином стиле.
yiisoft/validator – Мощный пакет валидаторов из фреймворка Yii, который можно использовать и самостоятельно.
Нажимая «Подписаться» я даю согласие на обработку персональных данных.
Мы заботимся о ваших данных и не будем злоупотреблять доверием.