PHP Digest
8.52K subscribers
60 photos
3 videos
288 links
PHP Дайджест

Новости, материалы и инструменты из мира PHP — раз в месяц.

Вопросы, замечания, предложения: @pronskiy
Download Telegram
Forwarded from Пых (Валентин Удальцов)
February 14, 2022
PHP Дайджест № 222 (7 – 21 февраля 2022)

Основное из дайджеста в телеграм-формате:

⚡️НОВОСТИ

🔹
PHP 7.4.28, PHP 8.0.16, PHP 8.1.3

Обновления актуальных веток PHP с фиксом уязвимости в php_filter_float(), а в 8.0 и 8.1 еще с пачкой других фиксов.

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


🔹 Ubuntu 22.04 LTS выйдет с PHP 8.1

Очередной релиз популярного Linux дистрибутива выйдет 21 апреля с предустановленным PHP версии 8.1.

В связи с этим предлагается поднять минимальную версию PHP в следующем релизе Symfony 6.1. А для Drupal 10 это уже сделали.


🔹 PhpStorm 2022.1 EAP

Продолжается программа раннего доступа первого мажорного релиза IDE в этом году. Сделали поддержку многострочных и вложенных аннотаций array shape! Можно использовать как в виде PHPDoc, так и в виде атрибута #[ArrayShape].


🔹 [RFC] Redacting parameters in back traces

На голосовании предложение добавить аттрибут #[SensitiveParameter] для предотвращения отображения конфиденциальныx данных в отладочных логах.


🔹 [RFC] Undefined Variable Error Promotion

Автор ранее предложил в PHP 9 перевести многие оставшиеся предупреждения (WARNING) в полноценные исключения. Такое уже раньше делали в PHP 8.0.

Ну а начать решил с использования необъявленных переменных. Сейчас в этом случае бросается Warning и используется значение null.


🔹 [RFC] Allow null and false as stand-alone types

Предлагается добавить возможность использовать null и false в декларациях типов.
Во-первых, это недостающие куски для полноты системы типов в PHP — есть mixed, добавили never, объединения и пересечения, не хватает юнит-типа.
Во-вторых, такие типы позволят покрыть некоторые граничные случаи и улучшить статический анализ.


🔹 Вышел Laravel 9

Есть отличные обзоры:
📺 Короткий видеообзор на русском от CutCode
🇷🇺 9 интересных новшеств в Laravel 9 — В тексте
📺 Laracasts: What's New in Laravel 9 — Подробно на видео


🔹 Shopware получили $100 млн инвестиций от PayPal и Carlyle

Открытая е-commerce платформа на базе Symfony поднимает хорошие деньги, пока кто-то говорит, что PHP мертв. Ранее в 2020 $130 млн получили Spryker — другая e-com платформа на PHP.
Обе компании, кстати, поддерживают фонд PHP.


🌀 РАЗНОЕ

🔸 Brent Roose: Service locator: an anti-pattern

🔸 Как помочь с релизом Yii 3 — Статья Виктора Бабанова из core-команды Yii3 подробно рассказывает как помочь фреймворку кодом, даже если вы никогда раньше этого не делали.

🔸Пых: fromName для enum — Про методы fromName и tryFromName для получения перечисления любого типа по его имени ($name).

--

👉 Больше новостей и ссылок в полном дайджесте на Хабре, а также инструменты и ссылки по фреймворкам.

Дайджест подготовлен совместно с Insolita.

🐘
February 22, 2022
February 22, 2022
July 25, 2022
July 26, 2022
Дерик (автор Xdebug) проводит опрос о дальнейшем развитии DateTime:
https://twitter.com/derickr/status/1551611856007069696

Перевод: Сделать класс DateTime изменяемым было одной из самых больших ошибок в API модуля Date/Time.
Я думаю изменить DateTime так, чтобы он был иммутабельным по умолчанию в PHP 9 и отказаться от класса DateTimeImmutable (или сделать псевдонимом).
Вероятно, это сломает чей-то код.
July 26, 2022
August 1, 2022
August 1, 2022
August 3, 2022
August 4, 2022
Forwarded from Пых (Валентин Удальцов)
🏫 Мой продвинутый курс по PHP

Я уже пару лет мечтаю о том, чтобы масштабно и комплексно поделиться знаниями, и наконец-то мне представилась возможность записать свой продвинутый курс по PHP! Огромное спасибо Loftschool за предложение посотрудничать!

Осенью мы начнём работу над курсом, а пока приглашаю вас посмотреть мастер-класс про паттерн middleware, который я записал в качестве пролога.

https://youtu.be/yMrbatAM3bw
August 4, 2022
August 5, 2022
August 25, 2022
October 5, 2022
Forwarded from Пых (Валентин Удальцов)
#[<T>] Дженерики через атрибуты

Роман Пронский в своём блоге предлагает реализовать стираемые дженерики путём расширения синтаксиса атрибутов.

Ход мысли такой. Сейчас мы описываем общие типы для Psalm и PHPStan в phpdoc-ах, то есть, по сути, и используем стираемые дженерики, только с не особо стандартизованным синтаксисом и в комментариях, КАРЛ. А ещё у нас есть атрибуты — синтаксис в PHP, предназначенный для метаинформации. Так почему бы нам не объединить две эти вещи? Так как атрибуты в текущем виде слабо подходят для типизации, Рома предлагает расширить их синтаксис, в частности, разрешить ставить атрибуты над выражениями и перед типом возвращаемого значения.

https://pronskiy.com/blog/generics-via-attributes-in-php/

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

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

2. Инстанциированные атрибуты можно получить только через рефлексию. Рефлексия — это рантайм и автолоадинг. Статанализ же в идеале вообще не должен запускать анализируемый код. Именно поэтому появились такие проекты, как PHP Parser и Better Reflection. Если же обновлённые атрибуты будут использоваться только как синтаксис, то нет смысла их называть атрибутами.

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

Получается, что замаскированные под атрибуты дженерики технически не смогут ими быть. Ну а в таком случае проще реализовать стираемые дженерики с привычным синтаксисом array<string, object>. Если же по каким-то техническим причинам необходимо оборачивать декларации в #[], то пусть это просто будут дженерики с таким синтаксисом.

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

Я очень рад, что Рома в очередной раз подогрел дискуссию вокруг дженериков. Любой подобный движ полезен для сообщества и приближает нас к результату.
November 1, 2022
November 2, 2022
Дайджест PHP – Ноябрь 2022

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

⚡️ НОВОСТИ

🔹 Вышел PHP 8.2 RC 7

В этом году добавлена ещё одна, седьмая RC-версия, выход PHP 8.2.0 GA откладывается до 8 декабря.

Bob Weinand обнаружил несколько ошибок, которые редко встречаются в искусственном коде, но с большой вероятностью могут воспроизвестись в реальном коде.

Завершение цикла PHP 7

Для PHP 7.4 больше не будут выходить обновления, релиз PHP 7.4.33 стал последним, рекомендуется обновиться до поддерживаемой версии.

🔹 Вышли PHP 8.0.26 и PHP 8.1.13

🐛 Это выпуски с исправлением ошибок.

🎂 PHP Foundation исполнился 1 год

Год назад компания JetBrains опубликовала новость о создании PHP Foundation.

За прошедший год PHP Foundation поддержал работу 6 разработчиков ядра и ежемесячно публиковал обновления в серии PHP Core Roundup.

Ознакомьтесь с отчетом фонда за 2022 год.

Поддержать PHP Foundation можно на OpenCollective.

Принят PSR-20: Clock

🔹 Группа PHP-FIG приняла PSR-20 с рекомендуемым интерфейсом ClockInterface для работы с датой и временем.

🐘 ЯДРО PHP

RFC: Randomizer Additions

RFC: Destructuring Coalesce

📣 RFC: Dynamic class constant fetch

Ilija Tovilo предложил добавить синтаксис для поиска констант класса.

📣 RFC: Arbitrary static variable initializers

Также Ilija Tovilo предлагает расширить синтаксис, позволяющий инициализатору статической переменной содержать произвольные выражения.

📣 RFC: Use exceptions by default in SQLite3 extension

Предлагается постепенно отказаться от предупреждений в модуле SQLite3.

📣 RFC: Readonly amendments

Nicolas Grekas и Máté Kocsis предлагают улучшить свойства и классы readonly.

🛠 PhpStorm

🔹 AMA с командой PhpStorm

🔹 Вышел PhpStorm 2022.3 RC – Полная поддержка PHP 8.2, новый пользовательский интерфейс (предварительный просмотр), поддержка Redis и многое другое.

🔹 VKCOM/modulite – Честная модульность внутри PHP.

🔴 LARAVEL

🎬 AMA About Laravel with Taylor Otwell

🔹 Как мы провели второй русскоязычный Laravel-митап от Михаила Радионова.

🔹 protonemedia/laravel-splade – Пакет для создания интерактивности непосредственно в Blade, без необходимости писать JS-код.

🟢 Yii

🔹 Новости Yii 2022, выпуск 2 от Александра Макарова.

🔹 Yii3 Overview 2. Вспомогательные инструменты разработки от Дмитрия Дерепко.

📄 СТАТЬИ

🔹 Как мы наш большой проект на KPHP мигрировали от Алексея Васильева.

🔹 KPHP спустя 2 года от Александра Кирсанова.

🔹 Старый код в новой обёртке — как наша команда избавлялась от legacy от Станислава Решетнева.

🎬 ВИДЕО

🔹 На Ютуб канале PHP Point вышли новые выпуски PHP-линча, где Валентин Удальцов разбирает несколько пакетов и комментирует код.



🎬 Дайджест PHP в видео-формате на канале CutCode
Please open Telegram to view this post
VIEW IN TELEGRAM
December 5, 2022