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

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

Вопросы, замечания, предложения: @pronskiy
Download Telegram
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/
Открытое собеседование по PHP | Эпизод #2 — Прием заявок

Пилотный выпуск открытого собеседования зашел отлично, и мы получили много ценных отзывов. Спасибо всем, кто был с нами на стриме и задавал вопросы!

Если вдруг вы не видели первый выпуск, то вот запись https://www.youtube.com/watch?v=FQNd9W3nb3A

Тем временем начинаем подготовку второго выпуска!

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

Темы будут ± те же, а вот вопросы подготовим новые, без Psalm 🙂

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

Вопросы в личку: @vudaltsov, @pronskiy.
Если думаете, что вам нечего рассказать на конференции, то сильно ошибаетесь! Из каждого года опыта работы можно вытянуть по идее, а то и больше, и они будут интересны многим.

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

🔗 Записаться можно здесь https://forms.gle/7mvqDwgE196CH7My9

Формат протестировали на 10 добровольцах и нашли по 2-3 темы для девяти из них.

Если же тема готова и помощь не нужна, то тогда отправляйте заявку на сайте https://phprussia.ru/moscow/2020
Новый синтаксис для атрибутов — #[Attr]

Голосование завершилось и в PHP 8 синтаксис для атрибутов будет такой же, как и в Rust.

#[
ORM\Entity,
ORM\Table("user")
]
class User
{
#[ORM\Id, ORM\Column("integer"), ORM\GeneratedValue]
private $id;

#[ORM\Column("string", ORM\Column::UNIQUE)]
#[Assert\Email(["message" => "The email '{{ value }}' is not a valid email."])]
private $email;
}


https://wiki.php.net/rfc/shorter_attribute_syntax_change
Прямо сейчас в эфире Кирилл Несмеянов потрошит асинхронщину https://www.twitch.tv/serafimarts
Ссылка обновлена, переехали на twitch 🤞
🔈 Выпуск подкаста Подлодка про PHP

Никита Попов рассказывает про внутренности PHP, а я про экосистему и прочее.

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

https://soundcloud.com/podlodka/podlodka-180-php
Никита Попов и Николас Грекас: совместимость Symfony с PHP 8

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

Интервью записали достаточно давно, и на тот момент тесты Symfony на PHP 8 были зеленые, но теперь снова нет 😁
Issue по совместимости помечены тегом Help wanted, так что если есть время законтрибьютить, то вот вариант.
Самый просматриваемый вопрос по PHP на Stack Overflow

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

Имплементация тривиальная:
function str_contains(string $haystack, string $needle): bool {
return '' === $needle || false !== strpos($haystack, $needle);
}

Казалось бы, зачем вообще добавлять? Возможно для того, чтоб самым популярным вопросом по PHP на стековерфлоу не был вопрос:

"Как проверить, содержит ли строка конкретное слово?" с 5.2 миллионами просмотров.
https://stackoverflow.com/questions/4366730/how-do-i-check-if-a-string-contains-a-specific-word
PHP-Дайджест № 188

PHP 8 Beta 4, инициатива по консолидации PHP-сообщества, концепт PHP для GraalVM, предложение по дженерикам в Internals, а также инструменты, видео, подкасты, статьи.

https://habr.com/ru/post/519960/
Стартовал ранний доступ (EAP) для PhpStorm 2020.3

В этом релизе запланирована полная поддержка PHP 8, Xdebug 3, PHPStan/Psalm (в следующих билдах), интеграция Guzzle с HTTP-клиентом и другие фичи, которые будут анонсироваться в блоге каждую неделю в течение следующих двух месяцев.

В первом посте все про поддержку PHP 8.

Как и всегда, EAP-версию можно использовать бесплатно.

https://blog.jetbrains.com/phpstorm/2020/10/phpstorm-2020-3-early-access-program-is-now-open/
PHP-Дайджест № 189

PHP 8.0 RC 1 и переименование параметров внутренних функций, PhpStorm 2020.3 EAP, многострочные короткие лямбды, атрибуты для групп свойств и другие новости PHP Internals, порция полезных инструментов, статьи, стримы, подкасты.

https://habr.com/ru/post/522042/
PhpStorm 2020.3 EAP #2: PHPStan, Psalm, начало дженериков

– PHPStan и Psalm работают из коробки.
– Для Psalm дополнение в тегах, поддержка типов и много всего.
– Для @template пока только самый тривиальный кейс.

https://blog.jetbrains.com/phpstorm/2020/10/phpstorm-2020-2-eap-2-phpstan-and-psalm-support-out-of-the-box/
Месяц PHP-митапов: каждую субботу с 17 октября по 14 ноября

Можно подключиться к трансляциям или аккуратно сходить.

▪️ 17 октября, с 16:00 (Мск)
Встреча PHP-чата Йошкар-Олы ( @php_yola )
Трансляция | Детали

▪️ 24 октября, с 10:00 (Мск)
Встреча PHP-чата Ульяновска ( @ulskPHP )
Трансляция | Детали

▪️
24 октября, с 14:30 (Киев)
ThinkPHP Онлайн, Харьков ( @php_w )
Детали

▪️ 31 октября, с 10:00 (Мск)
Встреча PHP-чата Самары ( @samara_php )
Трансляция | Детали

▪️ 7 ноября, с 11:00 (Мск)
Встреча PHP-чата Краснодара ( @phpkrd )
Трансляция | Детали

▪️ 14 ноября, с 11:00 (Мск)
Встреча PHP-чата Нижнего Новгорода ( @php_nn )
Трансляция | Детали

Бонус

▪️ 23 и 24 октября — онлайн-конференция PHPFest
Программа по новосибирскому времени https://2020.phpfest.ru/#program.
Можно смотреть бесплатно, но записей не будет.

▪️ 29 ноября 2020, Москва — PHP Russia
( @PHPRussiaConfChannel )
https://phprussia.ru/moscow/2020
Уже есть предварительное расписание.