Forwarded from PHP Fart Time (Алексей roxblnfk)
Новый выпуск "В мире PHP"
https://triangular-octopus-0f6.notion.site/PHP-2-d67a1f346b8541729fb3aa476e0fa086?pvs=4
⬆️ предыдущая часть
#Article #PHP #МыслиВслух
https://triangular-octopus-0f6.notion.site/PHP-2-d67a1f346b8541729fb3aa476e0fa086?pvs=4
⬆️ предыдущая часть
#Article #PHP #МыслиВслух
triangular-octopus-0f6 on Notion
В мире PHP #2 | Notion
Сорян, фартаны. Статейку чутка просрочил. Заработался, бывает. Представьте, что она опубликована месяц назад и баянов тут нет.
Пора возобновить наши встречи! Жду всех в эту среду в
18:30
по Москве.Одна заявка на линч у меня уже есть от Сергея Предводителева: vjik/telegram-bot-api. Пишите в комментариях, что ещё хотите посмотреть.
https://youtu.be/zuGtL5u2lsY
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #22 • vjik/telegram-bot-api
Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, symfony/console.
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
Надо ли нам запускать альтернативную платформу для вещания?
Anonymous Poll
15%
Да! Сейчас в комментариях напишу, что предпочитаю.
57%
Нет. Только YouTube, только хардкор.
29%
Мне всё равно! Готов смотреть где угодно.
Podlodka PHP Crew «Практическая архитектура»
На следующей неделе стартует пятая Podlodka PHP. Программа:
• Упорядочиваем хаос: архитектурная документация по модели C4 / Кирилл Сурогатов
• Как стать x2 разработчиком, используя явное состояние / Кирилл Мокевнин
• Нам уже нужен CQRS? А теперь? /💙 Валентин Удальцов
• PHP + Prometheus: Работа с кастомными метриками / Алексей Солодкий
• RabbitMQ vs Kafka: обрабатываем большие объёмы / Михаил Каморин
• Построение качественных банковских интеграций на PHP / Дмитрий Кириллов
• PHP будет долго жить: переезжаем на Roadrunner / Владимир Плахотников
• Нет ничего более постоянного, чем Temporal /🔥 Павел Бучнев, Алексей Гагарин
• Перевозим приложение на PHP в Kubernetes / Вадим Дворовенко
Сегодня последний шанс купить билет по сниженной цене. По промокоду
https://podlodka.io/phpcrew
На следующей неделе стартует пятая Podlodka PHP. Программа:
• Упорядочиваем хаос: архитектурная документация по модели C4 / Кирилл Сурогатов
• Как стать x2 разработчиком, используя явное состояние / Кирилл Мокевнин
• Нам уже нужен CQRS? А теперь? /
• PHP + Prometheus: Работа с кастомными метриками / Алексей Солодкий
• RabbitMQ vs Kafka: обрабатываем большие объёмы / Михаил Каморин
• Построение качественных банковских интеграций на PHP / Дмитрий Кириллов
• PHP будет долго жить: переезжаем на Roadrunner / Владимир Плахотников
• Нет ничего более постоянного, чем Temporal /
• Перевозим приложение на PHP в Kubernetes / Вадим Дворовенко
Сегодня последний шанс купить билет по сниженной цене. По промокоду
phpyh5
можно получить дополнительную скидку 500 руб.https://podlodka.io/phpcrew
Please open Telegram to view this post
VIEW IN TELEGRAM
podlodka.io
Онлайн-конференция Podlodka PHP Crew, сезон #7
Недельное мероприятие от команды Podlodka: ежедневные интерактивные сессии в Zoom по актуальным вопросам PHP-индустрии, нон-стоп общение с экспертами и звёздами индустрии, закрытое профессиональное сообщество в Telegram.
Live PHP meetup 3 октября
В этот четверг в Санкт-Петербурге пройдёт очередной Live PHP. Вот мои ожидания от докладов.
• GIGA IDE Cloud - сверхновая IDE во вселенной веб-разработки. Хочу послушать из первых уст про успехи Сбера на поприще IDE. Пора искать замену PhpStorm.
• Transaction Script и Transaction Outbox в PHP: Эффективные паттерны для управления транзакциями. В моей картине мира Transaction Script и Transaction Outbox — это как гранатовый сок и гранатовый браслет. Интересно узнать, как Станислав уместил две ортогональные концепции в один доклад.
• Страх и ненависть PSR. Недавно с Кириллом Мокевниным (интервью выйдет в октябре) обсуждали, что, несмотря на все проблемы, PHP всё-таки смог в стандарты в отличие от многих других языков. Качественный наброс от Кирилла Несмеянова будет очень кстати. С нетерпением жду!
• Как растут проекты. Дима Елисеев, с удовольствием послушаю любые твои мысли, только, пожалуйста, не затягивай.🙏
Короче, я взял билеты на Сапсан 🚝, и в четверг в 18:30 буду как штык в IT-баре Failover.
https://www.tg-me.com/live_php_news/27
В этот четверг в Санкт-Петербурге пройдёт очередной Live PHP. Вот мои ожидания от докладов.
• GIGA IDE Cloud - сверхновая IDE во вселенной веб-разработки. Хочу послушать из первых уст про успехи Сбера на поприще IDE. Пора искать замену PhpStorm.
• Transaction Script и Transaction Outbox в PHP: Эффективные паттерны для управления транзакциями. В моей картине мира Transaction Script и Transaction Outbox — это как гранатовый сок и гранатовый браслет. Интересно узнать, как Станислав уместил две ортогональные концепции в один доклад.
• Страх и ненависть PSR. Недавно с Кириллом Мокевниным (интервью выйдет в октябре) обсуждали, что, несмотря на все проблемы, PHP всё-таки смог в стандарты в отличие от многих других языков. Качественный наброс от Кирилла Несмеянова будет очень кстати. С нетерпением жду!
• Как растут проекты. Дима Елисеев, с удовольствием послушаю любые твои мысли, только, пожалуйста, не затягивай.
Короче, я взял билеты на Сапсан 🚝, и в четверг в 18:30 буду как штык в IT-баре Failover.
https://www.tg-me.com/live_php_news/27
Please open Telegram to view this post
VIEW IN TELEGRAM
Яндекс Карты
Failover Bar, бар, 4-я Советская ул., 7, Санкт-Петербург — Яндекс Карты
Рейтинг 4,7. 170 отзывов, 59 фото. Перейти на сайт, посмотреть меню, номер телефона, часы работы, вход на карте и построить маршрут вы можете в Яндекс Картах.
Как и обещал, буду стараться делать линчи по средам. Сегодня предлагаю встретиться пораньше, в
18:00
, чтобы вы успели на Podlodka.https://youtu.be/FYVfQk0-t3U
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #23 • savinmikhail/Comments-Density
Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, symfony/console.
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
В последний момент исправляю рефлексию в PHP 8.4!
На неделе я начал добавлять поддержку PHP 8.4 в Typhoon Reflection, и очень рад, что взялся за это до релиза.
Во-первых, я зарепортил отсутствие обещанной в RFC хуков константы
А вот что меня реально загрузило, так это поведение новых методов
Сначала я подумал, что это баг, и создал тикет php-src#16175. Ilija, автор RFC, объяснил, почему так работает. Дело в том, что у свойств с симметричной видимостью отсутствует флаг ассиметричности. Поэтому для
Стало понятно, вот только пользоваться такой рефлексией по-прежнему дико неудобно. В API протекли детали реализации, которые, наоборот, должны быть инкапсулированы. Задача рефлексии — предоставить пользователю комфортный способ изучать код, а не продемонстрировать подкапотное устройство языка.
Но это ещё ладно. Сегодня до меня дошло, что в текущем виде рефлексия в PHP 8.4 ломает обратную совместимость! Если раньше проверка
Например, такой код корректно отработает для любых классов в PHP 8.3, но споткнётся на
Вот что я предложил в письме к internals, которое составил в Сапсане по дороге на Live PHP:
•
• Добавить
• Добавить
Вся проблема в том, что недавно вышел PHP 8.4 RC1, и вносить изменения уже поздно. Надеюсь, что мой посыл про нарушение обратной совместимости всё-таки убедит сделать исключение.
На неделе я начал добавлять поддержку PHP 8.4 в Typhoon Reflection, и очень рад, что взялся за это до релиза.
Во-первых, я зарепортил отсутствие обещанной в RFC хуков константы
ReflectionProperty::IS_VIRTUAL
. Но это тривиально, PR уже готов.А вот что меня реально загрузило, так это поведение новых методов
ReflectionProperty::isPrivateSet()
и isProtectedSet()
из Asymmetric Visibility RFC. Посудите сами:
final class Foo
{
// isPrivateSet() = true 👌
public private(set) mixed $public_private_set;
// isPrivateSet() = false 🤯
private private(set) mixed $private_private_set;
// isPrivateSet() = false 🤯
private mixed $private;
// isProtectedSet() = true 👌
public readonly mixed $public_readonly;
// isProtectedSet() = false 🤯
protected readonly mixed $protected_readonly;
// isProtectedSet() = false 🤯
protected protected(set) readonly mixed $protected_protected_set_readonly;
// isPrivateSet() = false 👌, isProtectedSet() = false 👌
public bool $virtual_no_set_hook { get => true; }
}
Сначала я подумал, что это баг, и создал тикет php-src#16175. Ilija, автор RFC, объяснил, почему так работает. Дело в том, что у свойств с симметричной видимостью отсутствует флаг ассиметричности. Поэтому для
private
и private private(set)
isPrivateSet()
возвращают false
, а не true
, как было бы логично ожидать. readonly
свойства без явного (set)
под капотом получают protected (set)
(см. "Relationship with readonly" в RFC), поэтому public readonly
будет ассиметричным с isProtectedSet() = true
, а protected readonly
— симметричным с isProtectedSet() = false
.Стало понятно, вот только пользоваться такой рефлексией по-прежнему дико неудобно. В API протекли детали реализации, которые, наоборот, должны быть инкапсулированы. Задача рефлексии — предоставить пользователю комфортный способ изучать код, а не продемонстрировать подкапотное устройство языка.
Но это ещё ладно. Сегодня до меня дошло, что в текущем виде рефлексия в PHP 8.4 ломает обратную совместимость! Если раньше проверка
$reflectionProperty->isPublic()
гарантировала, что не readonly
свойства доступны на запись и чтение из глобального скоупа, то при текущей реализации в 8.4 она будет гарантировать только чтение!
$reflectionProperty = new ReflectionProperty($class, $property);
if ($reflectionProperty->isPublic() && !$reflectionProperty->isReadonly()) {
$object->{$property} = $value;
}
Например, такой код корректно отработает для любых классов в PHP 8.3, но споткнётся на
public private(set) $property
в 8.4, потому что isPublic()
вернёт true
, а запись в свойство бросит ошибку.Вот что я предложил в письме к internals, которое составил в Сапсане по дороге на Live PHP:
•
ReflectionProperty::isPublic()
, isProtected()
и isPrivate()
должны сохранить своё поведение и возвращать true
только если свойство симметричное. Для public readonly
метод будет возвращать false
, потому что под капотом оно асимметричное с protected(set)
. Да, это сломает обратную совместимость, но не так критично, потому что все библиотеки уже учитывают тот факт, что в readonly
нельзя писать из глобального скоупа.• Добавить
ReflectionProperty::isPublicGet()
, isProtectedGet()
и isPrivateGet()
. Они должны возвращать true
, если свойство симметрично или асимметрично доступно на чтение.• Добавить
ReflectionProperty::isPublicSet()
и поменять поведение isProtectedSet()
и isPrivateSet()
: они должны возвращать true
, если свойство симметрично или асимметрично доступно на запись.Вся проблема в том, что недавно вышел PHP 8.4 RC1, и вносить изменения уже поздно. Надеюсь, что мой посыл про нарушение обратной совместимости всё-таки убедит сделать исключение.
externals.io
Asymmetric visibility Reflection API problems - Externals
#externals - Opening PHP's #internals to the outside
Forwarded from PHP Fart Time (Pavel Buchnev)
Как вы думаете? Почему этот код рабочий?
Вот ссылка, можете проверить
https://3v4l.org/WZBGM
<?php
https://temporal.io
echo 'Hello, World!';
Вот ссылка, можете проверить
https://3v4l.org/WZBGM
3v4l.org
Online PHP editor | output for WZBGM
Run your php code online; get statistics, vld output and compare output from all versions.
Пых
Как вы думаете? Почему этот код рабочий? <?php https://temporal.io echo 'Hello, World!'; Вот ссылка, можете проверить https://3v4l.org/WZBGM
Ну это, фартаны, известный прикол. А как вы думаете, почему такой код работает?
https://3v4l.org/D40FF
<?php
echo b'Пых';
https://3v4l.org/D40FF
Forwarded from PHP Fart Time (Алексей roxblnfk)
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, я задумал провести своими силами митап в Москве!
С меня:
▸ кайфовая площадка на 50 человек в центре города (уже забронирована и оплачена),
▸ бесплатный вход,
▸ трансляция и запись,
▸ пицца.
С вас — крутые доклады. Один уже есть, с него, собственно, всё и началось. Осталось найти ещё два! По ссылке форма для подачи заявки и требования к докладу:
https://forms.gle/HKA6AooDDfG8e6PBA
За пару недель до митапа я опубликую полную информацию о мероприятии и ссылку на онлайн-регистрацию. Пока просто пометьте в календаре, что вечер пятницы 8 ноября у вас занят.
До встречи в оффлайне!
Please open Telegram to view this post
VIEW IN TELEGRAM
Google Docs
Хочу выступить на Пыхапе в Москве!
Привет!
Программный комитет Пыхапа приглашает тебя выступить. Наши пожелания:
Доклад должен быть прямо или косвенно связан с PHP.
Идеальный регламент — 35 минут рассказ и 10 минут ответы на вопросы. Лучше ёмко рассказать, а потом бурно обсудить, чем долго…
Программный комитет Пыхапа приглашает тебя выступить. Наши пожелания:
Доклад должен быть прямо или косвенно связан с PHP.
Идеальный регламент — 35 минут рассказ и 10 минут ответы на вопросы. Лучше ёмко рассказать, а потом бурно обсудить, чем долго…
Не можешь подступиться к задаче? Сделай из неё инфоповод!
Завтра вместо линча законтрибьютим с вами PHP CS Fixer для моего RFC. Я уже немного разобрался с написанием кастомных фиксеров, но на стриме покажу весь процесс от форка до PR, чтобы получилось полное руководство по предложению изменений в Open Source.
https://youtu.be/8sbJq6b9hNI
Всех жду в
18:30
!Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Open Source Цех #1 • PHP CS Fixer для new без скобок
Попробуем в режиме лайв-кодинга законтрибьютить PHP CS Fixer для https://wiki.php.net/rfc/new_without_parentheses.
Подписывайтесь на наши каналы в Telegram:
• Пых https://www.tg-me.com/phpyh,
• PHP умирает?! https://www.tg-me.com/isPHPdying,
• PHP Digest https://www.tg-me.com/phpdigest.
Подписывайтесь на наши каналы в Telegram:
• Пых https://www.tg-me.com/phpyh,
• PHP умирает?! https://www.tg-me.com/isPHPdying,
• PHP Digest https://www.tg-me.com/phpdigest.
Пых
На этом стриме мы научимся контрибьютить в Open Source, работать с токенами, писать код по TDD и, конечно, опускать скобки в new выражениях!
Я уже в эфире, присоединяйтесь!
https://youtu.be/8sbJq6b9hNI
Получилось офигенно! Спасибо всем огромное.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Open Source Цех #1 • PHP CS Fixer для new без скобок
Попробуем в режиме лайв-кодинга законтрибьютить PHP CS Fixer для https://wiki.php.net/rfc/new_without_parentheses.
Подписывайтесь на наши каналы в Telegram:
• Пых https://www.tg-me.com/phpyh,
• PHP умирает?! https://www.tg-me.com/isPHPdying,
• PHP Digest https://www.tg-me.com/phpdigest.
Подписывайтесь на наши каналы в Telegram:
• Пых https://www.tg-me.com/phpyh,
• PHP умирает?! https://www.tg-me.com/isPHPdying,
• PHP Digest https://www.tg-me.com/phpdigest.
Недавно пообщались с Кириллом Мокевниным, сооснователем школы Хекслет и автором канала Организованное программирование, про наш с вами любимый PHP. Коснулись множества технических и гуманитарных тем от PSR и RoadRunner до экосистемы и сообщества. Надеюсь, вы так же кайфанёте от просмотра, как мы с Кириллом от записи.
https://youtu.be/1XAbFkMaWxw
https://vk.com/video-224967259_456239053
https://podcast.ru/1734325321
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Какое будущее ждет PHP? / Валентин Удальцов / Организованное программирование / #14
В этом выпуске мы вместе с Валентином Удальцовым, автором канала Пых в Telegram, обсуждаем PHP (тот самый язык программирования, про который говорят, что он умирает, а на нём 80% сайтов до сих пор написано). Поговорим про весь путь его развития — от старых…
Следующая версия PHP — 8.5
Если кто-то вдруг, как и я, полагал, что четвёртый минорный релиз будет последним для PHP 8 (по аналогии с PHP 7), то это не так. В ноябре следующего года ожидается PHP 8.5. Насчёт 9.0 нет никакой информации.
Мне это вчера подсветил Рома Пронский. Пруфы в переписках internals и в свежих RFC:
▸ https://externals.io/message/125667
▸ https://wiki.php.net/rfc/deprecations_php_8_5
Если кто-то вдруг, как и я, полагал, что четвёртый минорный релиз будет последним для PHP 8 (по аналогии с PHP 7), то это не так. В ноябре следующего года ожидается PHP 8.5. Насчёт 9.0 нет никакой информации.
Мне это вчера подсветил Рома Пронский. Пруфы в переписках internals и в свежих RFC:
▸ https://externals.io/message/125667
▸ https://wiki.php.net/rfc/deprecations_php_8_5
externals.io
PHP 8.4 forked - Externals
#externals - Opening PHP's #internals to the outside
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #24 • type-lang/mapper
Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, symfony/console.
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…