Пых
8.2K subscribers
264 photos
16 videos
6 files
591 links
Блог Валентина Удальцова о разработке на PHP.

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

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

Для связи используйте личные сообщения канала.
Download Telegram
Пых
🗺️ ClassMap: типизируем опции, конфиги, атрибуты Новая лекция в Пых Лектории про паттерн ClassMap — расширяемый и типобезопасный способ передачи конфигурации между компонентами. План лекции: • берём популярную библиотеку Symfony и находим три проблемы, связанные…
🗺️ ClassMap: типизируем опции, конфиги, атрибуты

Друзья, я осознал, что из тизера и описания многие не поняли, о чём моя новая лекция.

Вместо лишних слов выкладываю первые 11 минут материала, где я подробно демонстрирую проблематику и формулирую задачу.

📹 YouTube | 📹 VK Видео | 💙 Лекция целиком
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍277🔥7💊4🤮3🤡3💩2
Знакомство с новыми авторами PHPeople

У меня в офисе наконец-то появился проводной интернет, и я запускаю сезон стримов на Пыхе!

Для начала сегодня в 19:00 встретимся с новыми авторами PHPeople:

Александр Макаров — всемирно известный лидер команды Yii,
Пётр Мязин — автор Пятиминутки, перешёл с PHP на ИИ,
Павла Бучнев — фартанист и вайб-кодер,
Вадим Дворовенко — знает Laravel как Тейлор, но ещё не лысый,
Edmond Dantes — разрабатывает асинхронный PHP будущего.

Чуть позже объявлю, когда будет первый PHP-линч и Open Source Цех.

📹 YouTube | 📹 VK Видео | 🐘 PHPeople
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍1312😁3🤮1
Сегодня наконец-то PHP-линч #29!

Я открываю новый сезон знаменитой рубрики PHP-линч! Сам по ней невероятно соскучился.

Хотелось бы сразу посмотреть на Yii3, но лучше мы в этот раз разогреемся чем-то поменьше, а, например, в следующую среду весь стрим посвятим Yii.

Залетайте в 19:00 на 📹 YouTube и 📹 VK Видео.

#php_линч
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍97
Думаю новый поток Хардкорного курса прочитать уже про асинхронный PHP. Вместо Symfony возьмём AMPHP и Thesis и научимся работать с неблокирующим I/O. Что скажешь?
Anonymous Poll
55%
Отлично!
18%
Мне интереснее синхронный вариант курса
27%
Всё равно
👍10🔥4🤩31
PHP-линч #30 через час!

Чуть позже здесь будут ссылки на трансляции.

Сегодня снова не Yii3, потому что забыл заанонсить заранее. 😭
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍6💩3😱2
Пых
PHP-линч #30 📹 YouTube 📹 VK Видео Сначал долго разогревались, но потом стали смотреть Feolius/hell2shape. Вспомнили лексеры/парсеры, заюзали typhoon/type и законтрибьютили в hell2shape поддержку свойств с пустым именем. Вышло очень интересно. Код с линчей…
Кстати, мне тут подсказали, что библиотека Feolius/hell2shape с сегодняшнего стрима написана с явным участием LLM: .clinerules, memory-bank. У меня глаз пока не намётан на такое, я даже не заметил.

В целом, абсолютно всё равно, кто писал код. Главное, что мы хорошо провели время и много всего узнали — большое спасибо автору за предложение посмотреть его проект.

Зато я не сомневаюсь, что говённый Symfony ObjectMapper с прошлого линча написан от руки...
😁47👍63
PHP-линч #31: Yii3

В эту среду в 19 состоится долгожданный PHP-линч Yii3!

В прямом эфире установлю новоиспечённый фреймворк и поделюсь первыми впечатлениями. Всех жду!

📹 YouTube 📹 VK Видео

#php_линч
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥52👍227👀1
Wikipedia, ВКонтакте, WordPress и даже PornHub — всё это когда-то выросло на PHP. Язык программирования, который все давно «похоронили», продолжает спокойно держать половину интернета.

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

▶️ Смотреть | ▶️ Слушать

😮 Мы снимали этот подкаст на международной IT-конференции «Стачка»! В этом году она пройдёт 10-11 апреля в Ульяновске и 3-4 октября в Петербурге.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44👍138🤔1
Типабезопасный код — когда разработчик подавляет замечания статанализатора.

#пыхослов
1😁76💯9👍5🔥4
Пых
Типабезопасный код — когда разработчик подавляет замечания статанализатора. #пыхослов
Тем временем в php-src пару часов назад подъехал PR с реифицированными дженериками от аккаунта, зарегистрированного на GitHub сегодня...

Кто-то явно наслопал. 😵‍💫

https://github.com/php/php-src/pull/21317
https://www.reddit.com/r/PHP/comments/1rharkk/someone_just_created_pr_with_fully_working/
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁37🤯7🤬3🥴2
Open Source Цех #6

К сожалению, сегодня не получится постримить. 😭

Но я жду всех завтра в 19:00 в «Цехе»! Доработаем библиотеку подписчика kenny1911/php-clone-with, чтобы она работала как clone() в PHP 8.5.

📹 YouTube 📹 VK Видео

#open_source_цех
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥8
Пых
Open Source Цех #6 К сожалению, сегодня не получится постримить. 😭 Но я жду всех завтра в 19:00 в «Цехе»! Доработаем библиотеку подписчика kenny1911/php-clone-with, чтобы она работала как clone() в PHP 8.5. 📹 YouTube 📹 VK Видео #open_source_цех
Оказалось, что на сегодняшний вечер уже был запланирован стрим Кирилла Несмеянова в PHPeople — по слухам, он будет линчевать компоненты Thesis!

Тогда встречаемся в Цеху завтра, в пятницу, в 19:00. А пока ловите мой пост про типы, тоже, кстати, из 🐘 PHPeople:
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁8👍1
Опускаем возвращаемые типы

В некоторых функциональных языках (Haskell, OCaml) можно явно не декларировать типы. Они реализуют вывод типов на базе алгоритма Хиндли-Милнера.

Простой пример:

fun a b -> a + b


Проанализировав эту функцию, мы можем заключить, что в неё можно передавать только пары типов, для которых определён оператор +, например, числа. Возвращаемый тип для конкретной пары уже тривиально выводится.

В таких языках типы обычно указывают только в верхнеуровневых функциях, чтобы избежать неоднозначности и зафиксировать API.

Однако, Хиндли-Милнер очень плохо дружит с подтипизацией и юнионами, поэтому в условных Scala и TypeScript нельзя опускать типы параметров (интересный тикет для TS, кстати). А вот возвращаемые типы почти всегда можно:


def twss(message: String) = message + " That's what she said!"

twss("The box is too big to fit in the hole") // String



function twss(message: string)
{
return message + " That's what she said!"
}

twss("The box is too big to fit in the hole") // string


Это интуитивно понятно: когда мы знаем типы аргументов и умеем выводить типы выражений и инструкций, мы элементарно можем вывести возвращаемый тип, проанализировав все ветви выполнения.

Теперь к PHP. Наши статанализаторы, грубо говоря, работают в двух режимах:
рефлектор — читает сигнатуру, но не смотрит внутрь функции — полезен для стабов и вендорного кода,
чекер — читает сигнатуру и проверяет "кишки" — используется для кода проекта.

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


final readonly class App
{
// Валентин: PHPStan, выведи и запомни тут тип по-братски!
private function twss(string $message)
{
return $message . " That's what she said!";
}

public function greet(string $message): string
{
// PHPStan: Иди на х*й, Валентин!
// Method App::greet() should return string but returns mixed.
return $this->twss($message);
}
}


Тут мы получили ошибку статанализа, хотя этот код ни при каких условиях не сломается. Очень жаль! Можно было бы в приватных методах писать меньше кода...

Но! Выведенный возвращаемый тип учитывается в анонимках:


PHPStan\dumpType(
array_map(
static fn (int $int) => new BcMath\Number($int),
[1, 2],
),
);
// array{BcMath\Number, BcMath\Number}


И никаких других ошибок! Оно и понятно: анонимные функции — часть процедурного кода, а не сигнатур, поэтому они обязательно анализируются целиком. Ну и кроме того, PHPStan не поддерживает PHPDoc для анонимок (эта фича была оценена Ондрюхой в 1500-2000 EUR, которые ему, видимо, так никто и не дал), поэтому выведенный тип имеет выше приоритет, чем нативный.

Это я всё к чему: не указывайте возвращаемые типы в анонимках — это простой и типобезопасный способ сокращать визуальный долг и хоть немного чувствовать себя функциональным программистом.
🤔1715👍7😁2