Думаю новый поток Хардкорного курса прочитать уже про асинхронный PHP. Вместо Symfony возьмём AMPHP и Thesis и научимся работать с неблокирующим I/O. Что скажешь?
Anonymous Poll
55%
Отлично!
18%
Мне интереснее синхронный вариант курса
27%
Всё равно
👍10🔥4🤩3❤1
PHP-линч #30 через час!
Чуть позже здесь будут ссылки на трансляции.
Сегодня снова не Yii3, потому что забыл заанонсить заранее.😭
Чуть позже здесь будут ссылки на трансляции.
Сегодня снова не Yii3, потому что забыл заанонсить заранее.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍6💩3😱2
Пых
PHP-линч #30 через час! Чуть позже здесь будут ссылки на трансляции. Сегодня снова не Yii3, потому что забыл заанонсить заранее. 😭
PHP-линч #30
📹 YouTube 📹 VK Видео
Сначал долго разогревались, но потом стали смотреть Feolius/hell2shape.
Вспомнили лексеры/парсеры, заюзали
Код с линчей теперь в репозитории phpyh/lynch.
#php_линч
Сначал долго разогревались, но потом стали смотреть Feolius/hell2shape.
Вспомнили лексеры/парсеры, заюзали
typhoon/type и законтрибьютили в hell2shape поддержку свойств с пустым именем. Вышло очень интересно.Код с линчей теперь в репозитории phpyh/lynch.
#php_линч
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #30: phpyh/scaffolder, vjik/scaffolder, Feolius/hell2shape
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент (не)известного фреймворка.
2. Я выбираю проект.
3. Ставлю…
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент (не)известного фреймворка.
2. Я выбираю проект.
3. Ставлю…
1❤8👍4🔥2
Пых
PHP-линч #30 📹 YouTube 📹 VK Видео Сначал долго разогревались, но потом стали смотреть Feolius/hell2shape. Вспомнили лексеры/парсеры, заюзали typhoon/type и законтрибьютили в hell2shape поддержку свойств с пустым именем. Вышло очень интересно. Код с линчей…
Кстати, мне тут подсказали, что библиотека Feolius/hell2shape с сегодняшнего стрима написана с явным участием LLM: .clinerules, memory-bank. У меня глаз пока не намётан на такое, я даже не заметил.
В целом, абсолютно всё равно, кто писал код. Главное, что мы хорошо провели время и много всего узнали — большое спасибо автору за предложение посмотреть его проект.
Зато я не сомневаюсь, что говённый Symfony ObjectMapper с прошлого линча написан от руки...
В целом, абсолютно всё равно, кто писал код. Главное, что мы хорошо провели время и много всего узнали — большое спасибо автору за предложение посмотреть его проект.
Зато я не сомневаюсь, что говённый Symfony ObjectMapper с прошлого линча написан от руки...
GitHub
GitHub - Feolius/hell2shape: PHP type annotations from var_dump output
PHP type annotations from var_dump output. Contribute to Feolius/hell2shape development by creating an account on GitHub.
😁47👍6❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #31: Yii3
Мои впечатления от Yii3: https://youtu.be/8XZxnl2RZWI
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент…
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент…
1🔥52👍22❤7👀1
Пых
PHP-линч #31: Yii3 В эту среду в 19 состоится долгожданный PHP-линч Yii3! В прямом эфире установлю новоиспечённый фреймворк и поделюсь первыми впечатлениями. Всех жду! 📹 YouTube 📹 VK Видео #php_линч
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #31: Yii3
Мои впечатления от Yii3: https://youtu.be/8XZxnl2RZWI
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент…
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент…
👍32🤮9🔥7💩6❤3👀2
Пых
PHP-линч #31: Yii3 В эфире! 📹 YouTube 📹 VK Видео
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Мои впечатления от Yii3
В завершение вчерашнего стрима https://youtu.be/hJzkS1503I8 .
Telegram: https://t.iss.one/phpyh
YouTube: https://youtube.com/@phpyh
VK Видео: https://vkvideo.ru/@phpyh
Лекции Пыха: https://t.iss.one/phpyhobot
PHPeople: https://t.iss.one/phpeople_bot
Слоник Пых: https:…
Telegram: https://t.iss.one/phpyh
YouTube: https://youtube.com/@phpyh
VK Видео: https://vkvideo.ru/@phpyh
Лекции Пыха: https://t.iss.one/phpyhobot
PHPeople: https://t.iss.one/phpeople_bot
Слоник Пых: https:…
❤27👍22🔥8🤮4💩1
Forwarded from Терменвокс 🎧
YouTube
PHP. Один за всех, и все за одного. Гость – Валентин Удальцов // Подкаст «Программный комитет»
Можно ли разогнать buzz фактор языка с единицы? Сколько людей нужно, чтобы язык программирования выжил? Может ли государство действительно поддерживать IT? Какой самый известный сайт написан на PHP?
В «Программном комитете» Валентин Удальцов, член программного…
В «Программном комитете» Валентин Удальцов, член программного…
Wikipedia, ВКонтакте, WordPress и даже PornHub — всё это когда-то выросло на PHP. Язык программирования, который все давно «похоронили», продолжает спокойно держать половину интернета.
В новом выпуске подкаста «Программный комитет» вместе с разработчиком и автором телеграм-канала «Пых» Валентином Удальцовым разбираемся, почему PHP до сих пор живее всех живых, кто пишет на нём современные продукты и зачем компании продолжают вкладываться в его развитие.
▶️ Смотреть | ▶️ Слушать
В новом выпуске подкаста «Программный комитет» вместе с разработчиком и автором телеграм-канала «Пых» Валентином Удальцовым разбираемся, почему PHP до сих пор живее всех живых, кто пишет на нём современные продукты и зачем компании продолжают вкладываться в его развитие.
😮 Мы снимали этот подкаст на международной IT-конференции «Стачка»! В этом году она пройдёт 10-11 апреля в Ульяновске и 3-4 октября в Петербурге.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44👍13❤8🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #32: атрибуты, internal/destroy, a7-tech/laminas-attribute-controller
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент (не)известного фреймворка.
2. Я выбираю проект.
3. Ставлю…
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент (не)известного фреймворка.
2. Я выбираю проект.
3. Ставлю…
👍10🔥6❤1
Пых
Типабезопасный код — когда разработчик подавляет замечания статанализатора. #пыхослов
Тем временем в 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/
Кто-то явно наслопал.
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
GitHub
php-generics - Overview
php-generics has one repository available. Follow their code on GitHub.
1😁37🤯7🤬3🥴2
Open Source Цех #6
К сожалению, сегодня не получится постримить.😭
Но я жду всех завтра в
📹 YouTube 📹 VK Видео
#open_source_цех
К сожалению, сегодня не получится постримить.
Но я жду всех завтра в
19:00 в «Цехе»! Доработаем библиотеку подписчика kenny1911/php-clone-with, чтобы она работала как clone() в PHP 8.5.#open_source_цех
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Open Source Цех #6: Адаптируем kenny1911/php-clone-with под clone() из PHP 8.5
Telegram: https://t.iss.one/phpyh
YouTube: https://youtube.com/@phpyh
VK Видео: https://vkvideo.ru/@phpyh
Лекции Пыха: https://t.iss.one/phpyhobot
PHPeople: https://t.iss.one/phpeople_bot
Слоник Пых: https://ozon.ru/t/EcQCwSw
YouTube: https://youtube.com/@phpyh
VK Видео: https://vkvideo.ru/@phpyh
Лекции Пыха: https://t.iss.one/phpyhobot
PHPeople: https://t.iss.one/phpeople_bot
Слоник Пых: https://ozon.ru/t/EcQCwSw
👍12🔥8
Пых
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
GitHub
Thesis
Elegant. Expressive. Asynchronous. Thesis has 40 repositories available. Follow their code on GitHub.
1😁9👍1
Опускаем возвращаемые типы
В некоторых функциональных языках (Haskell, OCaml) можно явно не декларировать типы. Они реализуют вывод типов на базе алгоритма Хиндли-Милнера.
Простой пример:
Проанализировав эту функцию, мы можем заключить, что в неё можно передавать только пары типов, для которых определён оператор
В таких языках типы обычно указывают только в верхнеуровневых функциях, чтобы избежать неоднозначности и зафиксировать API.
Однако, Хиндли-Милнер очень плохо дружит с подтипизацией и юнионами, поэтому в условных Scala и TypeScript нельзя опускать типы параметров (интересный тикет для TS, кстати). А вот возвращаемые типы почти всегда можно:
Это интуитивно понятно: когда мы знаем типы аргументов и умеем выводить типы выражений и инструкций, мы элементарно можем вывести возвращаемый тип, проанализировав все ветви выполнения.
Теперь к PHP. Наши статанализаторы, грубо говоря, работают в двух режимах:
• рефлектор — читает сигнатуру, но не смотрит внутрь функции — полезен для стабов и вендорного кода,
• чекер — читает сигнатуру и проверяет "кишки" — используется для кода проекта.
Тут важно, что в режиме чекера анализатор не запоминает выведенный из тела функции возвращаемый тип. В общем случае это ок, потому что публичные контракты должны быть задекларированы явно, но для приватных методов было бы здорово запоминать выведенный тип:
Тут мы получили ошибку статанализа, хотя этот код ни при каких условиях не сломается. Очень жаль! Можно было бы в приватных методах писать меньше кода...
Но! Выведенный возвращаемый тип учитывается в анонимках:
И никаких других ошибок! Оно и понятно: анонимные функции — часть процедурного кода, а не сигнатур, поэтому они обязательно анализируются целиком. Ну и кроме того, PHPStan не поддерживает PHPDoc для анонимок (эта фича была оценена Ондрюхой в 1500-2000 EUR, которые ему, видимо, так никто и не дал), поэтому выведенный тип имеет выше приоритет, чем нативный.
Это я всё к чему: не указывайте возвращаемые типы в анонимках — это простой и типобезопасный способ сокращать визуальный долги хоть немного чувствовать себя функциональным программистом.
В некоторых функциональных языках (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, которые ему, видимо, так никто и не дал), поэтому выведенный тип имеет выше приоритет, чем нативный.
Это я всё к чему: не указывайте возвращаемые типы в анонимках — это простой и типобезопасный способ сокращать визуальный долг
GitHub
Proposal: Partial Type Argument Inference · Issue #26242 · microsoft/TypeScript
After exploring the concept in #23696, we've come to the conclusion that implicitly making type arguments available by name would unnecessarily expose previously unobservable implementation det...
🤔18❤15👍7👎2😁2
Пых
Оказалось, что на сегодняшний вечер уже был запланирован стрим Кирилла Несмеянова в PHPeople — по слухам, он будет линчевать компоненты Thesis! Тогда встречаемся в Цеху завтра, в пятницу, в 19:00. А пока ловите мой пост про типы, тоже, кстати, из 🐘 PHPeople:
Пишем "полифил" для clone() из PHP 8.5
Open Source Цех #6
Залетайте!
На стриме:
• внимательно изучим RFC: Clone with v2,
• склонируем kenny1911/php-clone-with,
• подтянем агентом Codex
• доведём либу до состояния полифила (в кавычках, потому что назвать функцию
📹 YouTube 📹 VK Видео
Open Source Цех #6
Залетайте!
На стриме:
• внимательно изучим RFC: Clone with v2,
• склонируем kenny1911/php-clone-with,
• подтянем агентом Codex
phpt тесты из php-src,• доведём либу до состояния полифила (в кавычках, потому что назвать функцию
clone не получится).Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Open Source Цех #6: Адаптируем kenny1911/php-clone-with под clone() из PHP 8.5
Telegram: https://t.iss.one/phpyh
YouTube: https://youtube.com/@phpyh
VK Видео: https://vkvideo.ru/@phpyh
Лекции Пыха: https://t.iss.one/phpyhobot
PHPeople: https://t.iss.one/phpeople_bot
Слоник Пых: https://ozon.ru/t/EcQCwSw
YouTube: https://youtube.com/@phpyh
VK Видео: https://vkvideo.ru/@phpyh
Лекции Пыха: https://t.iss.one/phpyhobot
PHPeople: https://t.iss.one/phpeople_bot
Слоник Пых: https://ozon.ru/t/EcQCwSw
👍6🔥5
Пых
Пишем "полифил" для clone() из PHP 8.5 Open Source Цех #6 Залетайте! На стриме: • внимательно изучим RFC: Clone with v2, • склонируем kenny1911/php-clone-with, • подтянем агентом Codex phpt тесты из php-src, • доведём либу до состояния полифила (в кавычках…
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Open Source Цех #6: Адаптируем kenny1911/php-clone-with под clone() из PHP 8.5, продолжение
Telegram: https://t.iss.one/phpyh
YouTube: https://youtube.com/@phpyh
VK Видео: https://vkvideo.ru/@phpyh
Лекции Пыха: https://t.iss.one/phpyhobot
PHPeople: https://t.iss.one/phpeople_bot
Слоник Пых: https://ozon.ru/t/EcQCwSw
YouTube: https://youtube.com/@phpyh
VK Видео: https://vkvideo.ru/@phpyh
Лекции Пыха: https://t.iss.one/phpyhobot
PHPeople: https://t.iss.one/phpeople_bot
Слоник Пых: https://ozon.ru/t/EcQCwSw
👍5🔥4
Пых
Пересоздал, залетайте! 📹 YouTube 📹 VK Видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉46🔥9👍4😱3