TGViewer
Channel Public Channel
Пых

Пых

@phpyh

Блог Валентина Удальцова о разработке на PHP.

Хобот @phpyhobot
https://youtube.com/@phpyh
https://vkvideo.ru/@phpyh
https://t.me/isPHPdying

Статистика: https://t.me/INOTAROBOT?start=st1219340804

Для связи используйте личные сообщения канала.
Subscribers
7.82K
Photos
287
Videos
20
Links
629

Showing posts older than #215 · Back to latest

Older Posts 20 shown
Post #214 5.46K
Рекомендую PHP Дайджест Live!

На стриме Рома расставляет акценты и делает дайджесты ещё более подробными и полезными.

Например, до вчерашнего лайва я хуже понимал концепцию файберов, не знал про нюансы #[Deprecated] и режимы в XDebug 3 и не решался заценить реакцию Бугаенко на PHP 8.

https://youtu.be/mvjj_YX_BqQ
YouTube PHP Digest Live #195. Асинхронный PHP в 8.1, нативные атрибуты, слоники Fibers для асинхронного PHP, первые нативные атрибуты, короткий match и другие RFC предложения для PHP 8.1, инструменты, статьи + больше деталей, результаты розыгрыша и новый конкурс со слониками. Опрос по итогам года: https://skyeng-school.typeform.com/to/iNfIjQbr…
Post #213 5.52K
Единственный правильный способ прокинуть логгер ☝️

Что не так с LoggerAware* костылями:

• LoggerAwareInterface делает дыру в сервисе методом setLogger. Да и как контракт он абсолютно бесполезен.

• В LoggerAwareTrait свойство logger, что бы ни говорил phpdoc, имеет значение по умолчанию null и, соответственно, nullable тип. Значит его либо нужно всегда проверять if ($this->logger !== null), либо как в сниппете инициализировать в конструкторе пустым логгером, только уже не в качестве фоллбэка, а превентивно. В любом случае код получится более сложным и менее очевидным.

PSR-3 я также комментировал в среду на стриме про трейты: https://youtu.be/xoEPNiMtVps?t=4069.
Post #212 6.18K
Когда ведёшь медиа по PHP 😎
Post #210 6.14K
Пых Через час собираемся на PHP Point, чтобы обсудить трейты! Будет две трансляции: • на YouTube https://youtu.be/DEk56xbMITo, • и ВКонтакте https://vk.com/hexlet?w=wall-54520471_9949 (спасибо @hexlet_ru). Крутая альтернативная обложка от phpcommunity.ru (SkyEng)…
Мы начали! 🤪🔥🤯

https://youtu.be/DEk56xbMITo
YouTube Трейты в PHP — зло? Валентин Удальцов против всех (Часть 1) Продолжение: https://youtu.be/xoEPNiMtVps Битва сторонников и противников трейтов, которая раз и навсегда расставит точки! Партнеры: Skyeng 🎸, Hexlet 🥁 http://phpcommunity.ru Участники: Валентин Удальцов (Happy Inc, Пых) Сергей Жук (Skyeng, подкаст «Между…
Post #208 5.9K
Самый быстрый способ выяснить, какие пакеты мешают вам перейти на PHP 8:

composer why-not php ^8

На скрине ситуация на нашем проекте в Happy Inc. Делитесь в Пыхтелке, как у вас с этим обстоят дела 🤓

lcobucci/jwt в 4-ой версии уже поддерживает PHP 8, но пока не дошли руки поправить нарушения обратной совместимости, под которые мы попадаем.
Post #206 4.68K
Post #205 4.75K
Напоминаю, что уже давно можно пользоваться функциями PHP 8 даже если у вас 7.1!

Ставим Symfony Polyfill PHP 8.0 и получаем следующие функции:

• str_contains,
• str_starts_with,
• str_ends_with,
• get_debug_type,
• preg_last_error_msg,
• fdiv,
• get_resource_id.

composer req symfony/polyfill-php80
GitHub GitHub - symfony/polyfill-php80: Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions - symfony/polyfill-php80
Post #204 4.9K
Post #203 4.8K
📖 Только что купил и начал читать Introducing EventStorming, основополагающий труд по ивент стормингу от автора этого подхода, Альберто Брандолини.

Ивент сторминг ("событийный штурм") — это формат совещания, на котором разработчики и доменные эксперты вместе проясняют предметную область. Результатом такого обсуждения является набор бизнес-процессов, сформулированных в терминах DDD. Подробнее на Википедии.

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

https://www.eventstorming.com/book/
Post #202 5.44K
Привет, пыхари ☃️

Вы всё чаще обращаетесь ко мне в личке, и я очень рад, что могу быть полезен, записывая между делом голосовые сообщения.

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

Пишите мне (@vudaltsov), о чём хотите поговорить. Если я достаточно в теме, согласуем дату и время созвона. Дальше по ситуации. Пока ставка 3000 рублей в час. Если спрос будет большим, она может вырасти 😉
Post #201 5.5K
Вдохновляющая статья про PHP от Мэтью Брауна, автора Psalm.

I’m here to tell you that it can, and Vimeo’s continued success with PHP is proof that it’s a great tool for fast-moving companies in 2020.

https://medium.com/vimeo-engineering-blog/its-not-legacy-code-it-s-php-1f0ee0462580

Только мыть, конечно, лучше сверху вниз, а не наоборот 😄
Medium It’s not legacy code — it’s PHP Vimeo has been using PHP in production for over 15 years. Find out how we keep a million lines of PHP in check!
Post #200 4.73K
Как избавиться от лишних неявных зависимостей 🧹

Рассмотрим классический пример про полифилы. Symfony Console версии 5.1 использует функцию is_countable, которая появилась в PHP 7.3. Чтобы поддерживать PHP 7.2, пакет требует полифил symfony/polyfill-php73. Поэтому когда мы устанавливаем symfony/console в проекте с PHP 7.4, мы получаем не только компонент, но и полифил PHP 7.3, который нам, очевидно, не нужен.

Чтобы его удалить, нужно в composer.json в разделе replace прописать "symfony/polyfill-php73": "*" и выполнить update. Аналогично можно убрать полифилы расширений PHP, предварительно гарантировав их наличие через require ext-<name> (см. сниппет).

ComposerRequireChecker (на страже в CI) поможет не увлечься и не удалить лишние пакеты. Он проверит, что все используемые в проекте символы (функции, константы и классы) содержатся в зависимостях, явно прописанных в require.

В сниппете фрагменты composer.json из нашего проекта в Happy Inc.
Post #199 4.2K
Post #198 5.74K
dbal:run-sql

Недавно абсолютно случайно наткнулся на команду dbal:run-sql (всё-таки полезно гулять по папке vendor 🤓). Она поставляется с пакетом Doctrine DBAL, поэтому доступна не только симфонистам и ормщикам.

При помощи команды можно выполнить SQL запрос через любое сконфигурированное в приложении подключение, не заморачиваясь с доступами. Очень удобно использовать в Makefile и CI.

bin/console dbal:run-sql \
--connection=name \
'select ... from ...'
Post #197 4.69K
Ребята в Пыхтелке напомнили про Symfony PHPUnit Bridge.

В этом пакете есть SymfonyTestsListener, который в том числе умеет учитывать депрекации при тестировании. Его необязательно использовать с simple-phpunit, можно со стандартным phpunit. Подробнее о подключении и настройке читайте в документации.

Спасибо @chi_teck и @andrewDemb.
Telegram Пыхтелка Основной чат канала Пых @phpyh для обсуждения разработки на PHP. Правила группы: t.me/phpyhtelka/77070
Post #196 4.47K
Deprecations

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

Сегодня в PHP для этого полно инструментов, мы с командой пользуемся этими:

• Deprecated* issue в Psalm (в PHPStan есть phpstan-deprecation-rules);

• канал deprecation в Monolog (см. рецепт MonologBundle);

• команда debug:container --deprecations (выводит список устаревших сервисов, замеченных при сборке DI контейнера Symfony);

• вкладка Deprecations в разделе Logs в Symfony Profiler;

• подписка на релизы пакетов и внимательное их изучение.
Post #195 5.78K
Прямо сейчас очень интересная дискуссия Дмитрия Стогова и Никиты Попова про типы, компиляцию, async/await, корутины и траекторию развития PHP.

https://www.youtube.com/watch?v=QSszmWIrRyw
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →