PHP-Дайджест 183

Свежая подборка со ссылками на новости и материалы. В выпуске все про PHP 8: первая альфа, новое выражение match, баг в синтаксисе @@ для атрибутов, реальные бенчмарки JIT, 4 новых предложения. И, как всегда, инструменты, статьи, видео и подкасты.

Приятного чтения!

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

PHP Internals

[RFC] Shorter Attribute Syntax — На голосовании по новому синтаксису для атрибутов победил вариант @@.
Позже выяснилось, что этот синтаксис может трактоваться неоднозначно, а в реализации использовался хак, чтобы обойти проблему и об этом не было упомянуто в предложении.
Двусмысленность вот такая: function(@@X \ Y $z) может быть интерпретирован как function(@@X\Y $z) (атрибут X\Y и без типа) или function(@@X \Y $z)(атрибут X и \Y тип параметра). Потому что PHP допускает пробелы вокруг разделителя неймспесов.
К счастью для поклонников синтаксиса @@, Никита нашел способ решить проблему, если будет принято предложение [RFC] Treat namespaced names as single token.
[RFC] Match expression v2
match
switch
// Вот так работает switch:
switch ('foo') {
    case 0:
      $result = "Oh no!\n";
      break;
    case 'foo':
      $result = "This is what I expected\n";
      break;
}
echo $result;
//> Oh no!

// То же самое на match:
echo match ('foo') {
    0 => "Oh no!\n",
    'foo' => "This is what I expected\n",
};
//> This is what I expected
[RFC] Allow trailing comma in closure use lists
use
Скрытый текст
[RFC] Property write/set visibility
// Syntax Option A
class User {
    public:private int $id;
    public:protected string $name;
}

// Syntax Option B
class User {
    public private(set) int $id;
    public protected(set) string $name;
}
треду
аксессорами
ридонли свойствами
иммутабельными классами
[RFC] Language Constructs Syntax Changes
declare
__halt_compiler
echo
declare(strict_types=1);
// =>
declare strict_types = 1;
[RFC] Saner numeric strings — В этом RFC предлагается сделать два изменения по части обработки строк с числами.
Во-первых, избавиться от концепции «строки, начинающейся с цифр». Например в таком случае echo '2str' + 2; результат будет не 4, а 2 и вместо E_NOTICE “A non well formed numeric value encountered” будет брошен E_WARNING “A non-numeric value encountered”.
И во-вторых, разрешить пробельные символы в конце числовых строк, то есть чтоб "123 " == " 123" было true и все прочие операции работали, как и для строк с начальными пробелами.

Инструменты

  • Guzzle 7 — Свежий релиз самого известного HTTP-клиента для PHP. Теперь клиент реализует стандарт PSR-18, минимальная версия PHP 7.2, добавлены тайпхинты.
  • deligoez/xDebug-Toggler — Приложение для macOS для быстрого включения/выключения Xdebug.
  • denisyukphp/tmpfile-manager — Менеджер временных файлов. Умеет закрывать ресурсы, автоматически или вручную очищать временные файлы, запускать свой сборщик мусора. Прислал @jebox.
  • php-aidc/label-printer — Библиотека для работы с принтерами этикеток с поддержкой языков Fingerprint, Direct Protocol, TSPL/TSPL2. Прислал jhaoda.

Symfony

EasyAdmin 3 — Обновление генератора админок для Symfony-приложений.
ferrius/ddd-cqrs-example — Пример реализации принципов CQRS, DDD, ADR и гексагональной архитектуры на Symfony 5 и PHP 7.4.
Неделя Symfony #705 (29 июня — 5 июля 2020)
10 советов по тестированию в Symfony.
[Symfony 5] Раздельная авторизация для админов и пользователей с двумя разными сущностями и формами входа.
Простое управление ACL в Symfony.

Laravel

Laravel Worldwide Meetup — Первый выпуск онлайн-митапа Laravel пройдет 14 июля в 21:00 UTC+3.
Laravel Idea 3.1 — В новой версии плагина для PhpStorm добавлена поддержка Livewire и nWidart/laravel-modules.
scil/LaravelFly — Пакет позволяет запускать Laravel на Swoole. Автор заверяет, что можно запускать один и тот же код и на PHP-FPM и на Swoole. Есть сравнение с другими подобными реализациями.
Решение проблемы N+1 запроса без увеличения потребления памяти в Laravel.
Laravel-Дайджест (29 июня – 5 июля 2020)

Async PHP

Материалы для обучения

Путешествие в поисках утечки памяти — Как и где можно искать утечки, когда memory_get_usage() ничего не показывает.
Как использовать PHP FFI в программировании.
0xbigshaq/php7-internals — Репозиторий с подборкой уязвимостей в PHP, объяснением почему так происходит и как они эксплуатируются.
Как будет выглядеть программирование в 2025?
Что делает max_execution_time?
Настраиваем Xdebug и PhpStorm для Symfony.
Дебажим PHP-контейнер с помощью Xdebug и PhpStorm.
Как быть, когда все советуют растащить проект на микросервисы, а ты не готов.
Если вы используете моки, то вы хоть что-то тестируете?

Аудио/Видео

Настройка отладки с Xdebug, PhpStorm и Laravel в Docker — От автора Xdebug Derick Rethans.
Видео Пятиминутка PHP: Про PhpStorm на macOS Metal.
Видео Пятиминутка PHP: 25 лет PHP — история развития в наглядной инфографике.
Несколько видео с PHP fwdays 2020
Как готовить код-ревью: обсуждаем плохие и хорошие практики с Константином Буркалевым, Антоном Моревым, Сергеем Жуком и Александром Макаровым.
MoreView #11 — Интервью со мной про дайджесты, PHP, JetBrains.
Интервью Александром Макаровым про OpenSource, Yii 3 и всякое.
Serverless Chats Podcast #55 — C Mathew Napoli автором Bref о серверлесс PHP.
PHP Internals News #60 — C Eliot Lear о поддержке новых криптографических функций согласно RFC-5652 в PHP 8.
PHP Internals News #59 — C Никитой Поповым об именованных параметрах, которые он в скором времени планирует выставить на голосование для PHP 8.
via:Pronskiy
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Комментарии
Сообщество
Календарь
«    Июнь 2021    »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
282930 
Контакты
Telegram: @WmRush
Skype: molart111
E-Mail: [email protected]