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

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

Вопросы, замечания, предложения: @pronskiy
Download Telegram
Где купить PHP слоника

Прямо сейчас доступны серый и черный слоники Symfony
https://shop.symfony.com/collections/all

Пушистый PHP Roundtable
https://store.osmihelp.org/collections/frontpage/products/the-official-elephpant-plush-toy-of-the-php-roundtable

Белый ConFoo
https://shop.confoo.ca/white-elephpant

Парочка, в том числе оригинальный синий, есть у коллекционера Тима Бонда
https://www.tim-bond.com/elephpants/

Черного панк-слоника PhpStorm пока купить нельзя. Но его можно получить другими способами. (Карантинные меры ослабляют и мы их наконец-то можем отправить)
В самом разгаре программа раннего доступа PhpStorm 2020.2 и для того чтоб получить слоника достаточно зарепортить 5+ подтвержденных (!) багов в ЕАПе.
https://blog.jetbrains.com/phpstorm/2020/06/whats-coming-in-phpstorm-2020-2-eap-video-series-episode-1/
В продолжение вчерашнего стрима. Вот Marcel Pociot, вместо жалоб о том, что в PHP нет асинхронности, берет и делает аналог ngrok на PHP, используя ReactPHP.

https://github.com/beyondcode/expose

Инструмент позволяет пробросить туннель и сделать локальный ресурс доступным глобально. Очень удобно когда надо быстро продемонстрировать сайт. Или отладить веб-хуки например.

Есть пост с описанием внутреннего устройства: https://pociot.dev/28-introducing-expose-an-easy-to-use-tunneling-service-implemented-in-pure-php

Конечно, сервер Expose можно запустить и на своем домене: https://beyondco.de/docs/expose/server/starting-the-server

Справедливости ради у меня сходу не все заработало, так что продукт еще WIP и если нужна стабильность, то можно переждать на ngrok.
PHP-Дайджест № 182

3 принятых и 6 новых RFC-предложений из PHP Internals, включая голосование за новый синтаксис для атрибутов — @@ и почему #[] был бы лучше, переименования black/whitelist в PHP-мире, как отлаживают PHP-разработчики, видео, подкасты и многое другое.

https://habr.com/p/507636/
Media is too big
VIEW IN TELEGRAM
Открытое собеседование — ищем участников

Бывало, засидишься на одном месте и не знаешь, актуален ли ты еще на рынке... Хотя бы какие там тренды? Что спрашивают-то сейчас вообще на собеседованиях?

Вот и решили с Валентином Удальцовым провести публичное онлайн-собеседование с вопросами на актуальные темы мира PHP.

Трудоустройство не гарантируем, скорее это возможность рассказать о себе, проверить знания, узнать что-то новое да и просто хорошо провести время.

Собеседование будет проходить в режиме стрима в теплой обстановке, примерно как на видео, только Валентин будет без усов.

Требования для участия:
• уровень middle/senior;
• PHP 7.x, Composer, PSR;
• ООП, SOLID, coupling/cohesion, вот это все;
• тестирование, PHPUnit;
• желателен опыт с Symfony 4/5;
• SQL, желательно PostgreSQL;
• представление о современных трендах в архитектуре приложений.

Заявки на участие можно отправить до 8 июля через форму: https://forms.gle/ES3nXiwf4ycosGEy9.

Вопросы в личку: @vudaltsov, @pronskiy.
PHP-Дайджест № 183

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

https://habr.com/p/509738/
Открытое собеседование № 1
Cтрим в четверг, 16 июля, в 17:00 по Москве/Киеву/Минску

https://www.youtube.com/watch?v=FQNd9W3nb3A

Валентин @phpyh и я @phpdigest совместно проведём открытое собеседование с Патриком Фельдешем.

Начнём со знакомства, перейдём к PHP, пробежимся по SOLID и закончим где-то в архитектуре и вопросами из чата. В конце расскажем, что было хорошо, а что не очень, и прошел ли бы кандидат реальное собеседование.

Трансляция будет на новом YouTube канале PHP Point — подписывайтесь, чтоб не пропустить следующие проекты.
🔈 Нужны ли Unit-тесты — Владимир Янц в подкасте «Между Скобок»

https://soundcloud.com/between-braces/10-vladimir-yants-nuzhno-li-unit-testirovanie

Коротко и по делу о ключевых аспектах тестирования PHP-приложений. В тему пост Владимира о том, как устроено тестирование монолита в Badoo.
PHP-Дайджест № 184

Что будет с поддержкой PHP на Windows, PHP 8 Alpha 2, ReactPHP — официально продакшн-реди, 2 новых RFC предложения и 6 на голосовании, порция полезных инструментов, статьи, видео и подкасты.

https://habr.com/p/511686/
#Cтрим об утечках памяти в PHP

В долговыполняющихся приложениях (асинхронные, демоны, воркеры очередей, процессинг) на PHP , да и на любом другом языке, можно столкнуться с утечками памяти.

Валентин на стриме расскажет об опыте поиска проблемы, инструментах для анализа и о том, как фиксил. Все это на примере утечки, обнаруженной в Symfony–компоненте.

Среда, 18:00 Москва/Киев/Минск, канал PHP Point.

https://www.youtube.com/watch?v=NNMp-97rk9c
#RFC И снова о синтаксисе атрибутов в PHP 8

https://wiki.php.net/rfc/shorter_attribute_syntax_change

Сначала Benjamin Eberlei подготовил детальный RFC по атрибутам и предложил синтаксис <<Attribute>>.

Предложение прошло, но позже после споров предложен другой RFC с тремя вариантами синтаксиса на голосовании: <<>>, #[] и @@.

Победил вариант @@, видимо, как максимально близкий к тегам PHPDoc и аннотациям в Java. Но автор этого RFC умолчал о проблеме с парсером и о хаке, который он применил, чтоб обойти проблему.

И вот теперь Derick Rethans автор Xdebug написал письмо в Internals, что синтаксис @@ ужасен вот почему:

▪️ Конфликт с парсером.
▪️ Большая вероятность проблем с парсингом в будущем.
▪️ Отсутствие символа в конце атрибута (с ним проще искать и проще для инструментов вроде PHPCS).
▪️ Синтаксис не используется ни в одном другом языке.
▪️ Оператор @ никогда не уйдет из PHP, а значит и атрибуты из @@ не станут @.

По следам этого письма и подготовили новый RFC, который предлагает использовать синтаксис #[ ] как в Rust.
Релиз PhpStorm 2020.2

Из наиболее заметного в этом мажорном обновлении:

▪️ PHP 8 union types
▪️ Новый движок потока управления для PHP
▪️ Полная поддержка пул-реквестов GitHub
▪️ Новый рефакторинг Extract Class
▪️ Поддержка OpenAPI (с плагином)

Подробный разбор этих и всех других новых фич на русском:

https://habr.com/ru/company/JetBrains/blog/513250/
PHP-Дайджест № 185

PHP 8 Alpha 3, PhpStorm 2020.2, новый оператор ?->, снова обсуждение синтаксиса атрибутов и другие новости PHP Internals, обзор системы типов в PHP, порция полезных инструментов, видео, стримы.

https://habr.com/p/513558/
Приведение типов в PHP во многих случаях работает по принципу «лучше хоть как-то, чем никак».

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

debug=_0 // .env
(bool) getenv('debug'); // true!

Чтобы избавиться от таких проблем, можно взять filter_var с его флагами и бросать свой Exception.

Или можно взять обертку над значениями zakirullin/mess:

(new Mess(getenv('debug')))->getAsBool();
// _0 => UncastableValueException

В Mess можно скармливать массивы/примитивы:

$mess = new Mess($apiResponse);
$profile = new Profile(
$mess['profile']['name']->getString(),
$mess['votes']->getInt(),
$mess['is_deleted']->getBool()
)
// Dealing with typed ValueObject
Финальное голосование по синтаксису атрибутов в PHP 8

https://wiki.php.net/rfc/shorter_attribute_syntax_change

К рассматриваемым раньше @@Attr, #[Attr], <<Attr>> добавился еще вариант @[Attr].

Голосование проходит по системе STV. Это значит, что каждый ранжирует синтаксисы по предпочтению. Если я подсчитал все правильно, то в конечном результате на данный момент побеждает все-таки #[Attr].

https://gist.github.com/pronskiy/f2240b300e60cf38db1da2a94667ff6e#gistcomment-3415687

И дельное замечание от Джорди (Composer) о том, что переживать насчет синтаксиса не стоит. Раньше уже было такое, например, при выборе разделителя для неймспесов https://wiki.php.net/rfc/namespaceseparator. Тогда в 2008 в качестве альтернативы привычному сейчас \ рассматривались: **, ^^, %%, :>, :::

Upd:
Benjamin Eberlei пишет, что изначально большинство хотели ::, потому что такой синтаксис в C++ и проблема с этим синтаксисом была найдена позже, когда уже имелась реализация.
PHP-Дайджест № 186

PHP 8 Beta 1, снова о синтаксисе атрибутов в PHP 8: #[Attr] vs @[Attr], предложение по синтаксису для BigInt, обзоры PHP 8 и много других видео, инструменты, стримы, подкасты.

https://habr.com/p/515416/