Пых
Open Source Цех #4 / PHP-CS-Fixer, Brick\Math, Infection Сегодня в очередном выпуске Цеха изучим ревью моего PR в PHP-CS-Fixer с прошлых стримов, поконтрибьютим в пару проектов и посмотрим на канал @open_source_php от Димы Дерепко. Приходите в 18, разогрею…
Смерджили мой PR в Brick\Math с Open Source Цеха #4!
https://github.com/brick/math/pull/90
Суть изменения тривиальна: сузить возвращаемый тип
Сначала на стриме я попробовал по-честному расставить типы по всей внутрянке, но упёрся в то, что в местах конкатенации
BenMorel согласился с моими доводами и зарелизил улучшение в 0.13.1.
Процесс контрибьютинга от форка до PR:
https://youtu.be/viWYmUUsD5I?t=3900s
https://vkvideo.ru/video-228746873_456239037?t=1h7m20s
https://github.com/brick/math/pull/90
Суть изменения тривиальна: сузить возвращаемый тип
BigInteger::__toString()
и BigDecimal::__toString()
до numeric-string
, чтобы после приведения к строке значения можно было передавать в numeric-string
и non-empty-string
параметры (мне это потребовалось в недрах Typhoon).Сначала на стриме я попробовал по-честному расставить типы по всей внутрянке, но упёрся в то, что в местах конкатенации
numeric-string
не выводится и его нужно форсить (прописывать @var
или assert
). В итоге предложил автору лёгкий путь: зафорсить тип только в самом методе __toString()
и больше ничего не менять.BenMorel согласился с моими доводами и зарелизил улучшение в 0.13.1.
Процесс контрибьютинга от форка до PR:
https://youtu.be/viWYmUUsD5I?t=3900s
https://vkvideo.ru/video-228746873_456239037?t=1h7m20s
GitHub
Force numeric-string return type in BigDecimal::__toString() and BigInteger::__toString() by vudaltsov · Pull Request #90 · brick/math
Closes #89.
@return numeric-string cannot be added to BigRational, because '10/20' is not a numeric string. So I added numeric-string to BigDecimal and BigInteger classes only. This...
@return numeric-string cannot be added to BigRational, because '10/20' is not a numeric string. So I added numeric-string to BigDecimal and BigInteger classes only. This...
Пыхап #3 / 18 апреля 2025
Ровно через 2 недели состоится третий Пыхап! В программе 2 доклада и так полюбившийся вам Открытый микрофон:
😨 Раскапываем редис
Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация, AOF vs RDB, структуры данных и клиенты для PHP.
💰 Лайвкодим крипту на PHP
Сергей Жук снова достанет свои Money и, пошарив экран, покажет, как перевести крипту и не остаться с "нонсом".
🎤 Открытый микрофон (только офлайн)
В конце митапа любой участник сможет на 5-10 минут завладеть микрофоном и флипчартом и поделиться насущной проблемой, элегантным решением или историей про то, как уронил накануне прод.
🍕 В перерывах традиционное пицца-driven общение, а после митапа афтепати в грузинском ресторане.
Пыхап пройдёт всё там же — в уютном лофте «Событие» на Таганке. Собираемся в пятницу в 18:30. Ну и конечно же митап будет транслироваться на YouTube и VK Видео с записью!
https://phpyh.timepad.ru/event/3250220/#register
Спонсор третьего Пыхапа — YCLIENTS.
Ровно через 2 недели состоится третий Пыхап! В программе 2 доклада и так полюбившийся вам Открытый микрофон:
Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация, AOF vs RDB, структуры данных и клиенты для PHP.
Сергей Жук снова достанет свои Money и, пошарив экран, покажет, как перевести крипту и не остаться с "нонсом".
В конце митапа любой участник сможет на 5-10 минут завладеть микрофоном и флипчартом и поделиться насущной проблемой, элегантным решением или историей про то, как уронил накануне прод.
Пыхап пройдёт всё там же — в уютном лофте «Событие» на Таганке. Собираемся в пятницу в 18:30. Ну и конечно же митап будет транслироваться на YouTube и VK Видео с записью!
https://phpyh.timepad.ru/event/3250220/#register
Спонсор третьего Пыхапа — YCLIENTS.
Please open Telegram to view this post
VIEW IN TELEGRAM
PHP True Async: обсуждаем RFC с автором
1 марта Дмитрий опубликовал первую версию RFC "PHP True Async". Цели предложения: установить стандарт конкурентного программирования на PHP, разработать С-API, отрефакторить существующие функции и расширения.
В процессе бурного обсуждения в internals было поднято несколько важных вопросов:
▸ На какие этапы следует разбить такой большой проект?
▸ Нужно ли явно активировать Scheduler и как это связано с обратной совместимостью?
▸ Нужна ли в PHP structured concurrency? Как это согласуется с файберами?
▸ Будет ли поддержка многопоточности, как, например, в Go?
Чтобы во всём этом разобраться, я решил организовать стрим с участием Дмитрия, разработчика RFC, и Вадима, автора доклада Чем вам не угодил асинхронный PHP? на PHP Russia 2024.
Встречаемся в эту среду 9 апреля в 19:00 МСК:
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
Предвкушаю непростой для понимания разговор, поэтому приступил к изучению матчасти. Вот несколько полезных ссылок:
▸ Первая версия RFC, 1-я фаза обсуждения
▸ Обновлённая версия RFC, 2-я фаза обсуждения
▸ Репозиторий с самыми актуальными текстами Дмитрия на GitHub
▸ Notes on structured concurrency, or: Go statement considered harmful
▸ Java Virtual Threads, Kotlin Coroutines, Swift Structured concurrency
1 марта Дмитрий опубликовал первую версию RFC "PHP True Async". Цели предложения: установить стандарт конкурентного программирования на PHP, разработать С-API, отрефакторить существующие функции и расширения.
В процессе бурного обсуждения в internals было поднято несколько важных вопросов:
▸ На какие этапы следует разбить такой большой проект?
▸ Нужно ли явно активировать Scheduler и как это связано с обратной совместимостью?
▸ Нужна ли в PHP structured concurrency? Как это согласуется с файберами?
▸ Будет ли поддержка многопоточности, как, например, в Go?
Чтобы во всём этом разобраться, я решил организовать стрим с участием Дмитрия, разработчика RFC, и Вадима, автора доклада Чем вам не угодил асинхронный PHP? на PHP Russia 2024.
Встречаемся в эту среду 9 апреля в 19:00 МСК:
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
Предвкушаю непростой для понимания разговор, поэтому приступил к изучению матчасти. Вот несколько полезных ссылок:
▸ Первая версия RFC, 1-я фаза обсуждения
▸ Обновлённая версия RFC, 2-я фаза обсуждения
▸ Репозиторий с самыми актуальными текстами Дмитрия на GitHub
▸ Notes on structured concurrency, or: Go statement considered harmful
▸ Java Virtual Threads, Kotlin Coroutines, Swift Structured concurrency
Пых
Пыхап #3 / 18 апреля 2025 Ровно через 2 недели состоится третий Пыхап! В программе 2 доклада и так полюбившийся вам Открытый микрофон: 😨 Раскапываем редис Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация, AOF vs RDB, структуры данных…
Регистрация на Пыхап #3 открыта!
https://phpyh.timepad.ru/event/3250220/#register
В конце следующей недели пройдёт третий Пыхап. В программе 2 доклада, Открытый микрофон (только офлайн), пицца и афтепати.
🗓 18 апреля в 18:30 (пятница)
📍 Событие Лофт на Таганке
💸 1000р. за офлайн-билет, участие онлайн бесплатное
Спонсор митапа — YCLIENTS.
https://phpyh.timepad.ru/event/3250220/#register
В конце следующей недели пройдёт третий Пыхап. В программе 2 доклада, Открытый микрофон (только офлайн), пицца и афтепати.
Спонсор митапа — YCLIENTS.
Please open Telegram to view this post
VIEW IN TELEGRAM
phpyh.timepad.ru
Пыхап #3 / 18 апреля 2025 / События на TimePad.ru
Пишешь на PHP? Приходи на митап от автора канала «Пых»! В программе 2 хардкорных доклада, Открытый микрофон, пицца-driven общение и уютная атмосфера лофта «Событие» в центре Москвы.
Property Hooks во всей красе
Вчера на курсе обратил внимание, что низкоуровневый интерфейс обработчика сообщений, о котором многие из вас скоро узнают на лекции по MessageBus, в PHP 8.4 было бы в разы приятнее имплементировать. Как это выглядит сейчас:
Бесит, что для
Ну кайф же? -5 строк кода! К сожалению, я пока не могу себе позволить писать опенсорсные либы с
___________
Тем временем разобрали половину билетов на Пыхап в следующую пятницу. Регистрация продолжается: https://phpyh.timepad.ru/event/3250220/#register
Вчера на курсе обратил внимание, что низкоуровневый интерфейс обработчика сообщений, о котором многие из вас скоро узнают на лекции по MessageBus, в PHP 8.4 было бы в разы приятнее имплементировать. Как это выглядит сейчас:
interface Handler
{
public function id(): string;
public function handle(Context $context): mixed;
}
final readonly class CallableHandler implements Handler
{
public function __construct(
private string $id,
private Closure $handler,
) {}
public function id(): string
{
return $this->id;
}
public function handle(Context $context): mixed
{
return ($this->handler)($context);
}
}
Бесит, что для
id
в имплементации надо так много всего написать. А вот аналогичный вариант в PHP 8.4:
interface Handler
{
public string $id { get; }
public function handle(Context $context): mixed;
}
final readonly class CallableHandler implements Handler
{
public function __construct(
public string $id,
private Closure $handler,
) {}
public function handle(Context $context): mixed
{
return ($this->handler)($context);
}
}
Ну кайф же? -5 строк кода! К сожалению, я пока не могу себе позволить писать опенсорсные либы с
"php": "^8.4"
, но хоть вы за меня на проектах оттянитесь!___________
Тем временем разобрали половину билетов на Пыхап в следующую пятницу. Регистрация продолжается: https://phpyh.timepad.ru/event/3250220/#register
phpyh.timepad.ru
Пыхап #3 / 18 апреля 2025 / События на TimePad.ru
Пишешь на PHP? Приходи на митап от автора канала «Пых»! В программе 2 хардкорных доклада, Открытый микрофон, пицца-driven общение и уютная атмосфера лофта «Событие» в центре Москвы.
Пых
PHP True Async: обсуждаем RFC с автором 1 марта Дмитрий опубликовал первую версию RFC "PHP True Async". Цели предложения: установить стандарт конкурентного программирования на PHP, разработать С-API, отрефакторить существующие функции и расширения. В процессе…
PHP True Async: обсуждаем RFC с автором
Сегодня в 19:00 по Москве мы встретимся с Дмитрием и Вадимом, чтобы обсудить RFC PHP True Async и перспективы появления нативной асинхронности в PHP. Основные темы:
▸ Опыт других языков.
▸ Экосистемы AMPHP, ReactPHP, Swoole.
▸ Нужна ли в PHP structured concurrency? Как это согласуется с файберами?
▸ Будет ли поддержка многопоточности, как, например, в Go?
▸ На какие этапы будет разбит такой большой проект?
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
🎫 Авторы самых интересных вопросов в чате трансляции получат бесплатные билеты на третий Пыхап!
Для подготовки рекомендую изучить RFC, а также посмотреть доклад Вадима Чем вам не угодил асинхронный PHP? Другие полезные ссылки в первом анонсе.
Сегодня в 19:00 по Москве мы встретимся с Дмитрием и Вадимом, чтобы обсудить RFC PHP True Async и перспективы появления нативной асинхронности в PHP. Основные темы:
▸ Опыт других языков.
▸ Экосистемы AMPHP, ReactPHP, Swoole.
▸ Нужна ли в PHP structured concurrency? Как это согласуется с файберами?
▸ Будет ли поддержка многопоточности, как, например, в Go?
▸ На какие этапы будет разбит такой большой проект?
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
Для подготовки рекомендую изучить RFC, а также посмотреть доклад Вадима Чем вам не угодил асинхронный PHP? Другие полезные ссылки в первом анонсе.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP True Async: обсуждаем RFC с автором
1 марта Дмитрий опубликовал первую версию RFC "PHP True Async". Цели предложения: установить стандарт конкурентного программирования на PHP, разработать С-API, отрефакторить существующие функции и расширения.
В процессе бурного обсуждения в internals было…
В процессе бурного обсуждения в internals было…
Пых
PHP True Async: обсуждаем RFC с автором Сегодня в 19:00 по Москве мы встретимся с Дмитрием и Вадимом, чтобы обсудить RFC PHP True Async и перспективы появления нативной асинхронности в PHP. Основные темы: ▸ Опыт других языков. ▸ Экосистемы AMPHP, ReactPHP…
PHP True Async: обсуждаем RFC с автором
Мы начали! Комментировать можно прямо под этим постом.
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
Огромное спасибо моим гостям и зрителям, получилось очень круто!
Мы начали! Комментировать можно прямо под этим постом.
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
Огромное спасибо моим гостям и зрителям, получилось очень круто!
YouTube
PHP True Async: обсуждаем RFC с автором
1 марта Дмитрий опубликовал первую версию RFC "PHP True Async". Цели предложения: установить стандарт конкурентного программирования на PHP, разработать С-API, отрефакторить существующие функции и расширения.
В процессе бурного обсуждения в internals было…
В процессе бурного обсуждения в internals было…
Краудфандинг. Лекция по MessageBus
Проект Коллекционный PHP-слоник Пых успешно собрал средства. Вы перевыполнили план аж на 21%!💙
Как мы действуем дальше:
▸ Завтра (12 апреля) в 14:00 я прочитаю лекцию по MessageBus. Для получения ссылки на трансляцию обратитесь к новоиспечённому помощнику канала Пых — Хоботу.
▸ По слоникам PHP 8 я передал информацию Сергею Пантелееву. Он уже всем написал в личку и приступил к отправке.
▸ Пых-слоники, как вы знаете из предыдущих новостей, давно запущены в производство и должны приехать ко мне в начале июля. Тогда же я начну проводить личные встречи.
Ещё раз всем спасибо за участие и до встречи на лекции!
Проект Коллекционный PHP-слоник Пых успешно собрал средства. Вы перевыполнили план аж на 21%!
Как мы действуем дальше:
▸ Завтра (12 апреля) в 14:00 я прочитаю лекцию по MessageBus. Для получения ссылки на трансляцию обратитесь к новоиспечённому помощнику канала Пых — Хоботу.
▸ По слоникам PHP 8 я передал информацию Сергею Пантелееву. Он уже всем написал в личку и приступил к отправке.
▸ Пых-слоники, как вы знаете из предыдущих новостей, давно запущены в производство и должны приехать ко мне в начале июля. Тогда же я начну проводить личные встречи.
Ещё раз всем спасибо за участие и до встречи на лекции!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Пыхап в эту пятницу вечером!
Третий митап от канала Пых пройдёт 18 апреля в 18:30 в Лофте Событие на Таганке.
Как всегда, мы будем транслировать доклады на YouTube и VK Видео с записью, однако завести полезные знакомства, задать вопросы команде YCLIENTS и душевно подискутировать на Открытом микрофоне можно только офлайн!
Регистрируйся, осталось всего несколько билетов: https://phpyh.timepad.ru/event/3250220/
В программе:
😨 Раскапываем редис
Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация, AOF vs RDB, структуры данных и клиенты для PHP.
💰 Лайвкодим крипту на PHP
Сергей Жук снова достанет свои Money и, пошарив экран, покажет, как перевести крипту и не остаться с "нонсом".
🎤 Открытый микрофон (только офлайн)
В этой секции любой участник сможет на 5-10 минут завладеть сценой, поделиться проблемой или решением и получить обратную связь. Кирилл Несмеянов и Антон Морев уже планируют принять участие. Напиши мне, если тоже хочешь выступить.
🍕 Традиционное пицца-driven общение в перерывах, а после митапа — афтепати в грузинском ресторане.
💛 Спонсор третьего Пыхапа — YCLIENTS.
Третий митап от канала Пых пройдёт 18 апреля в 18:30 в Лофте Событие на Таганке.
Как всегда, мы будем транслировать доклады на YouTube и VK Видео с записью, однако завести полезные знакомства, задать вопросы команде YCLIENTS и душевно подискутировать на Открытом микрофоне можно только офлайн!
Регистрируйся, осталось всего несколько билетов: https://phpyh.timepad.ru/event/3250220/
В программе:
Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация, AOF vs RDB, структуры данных и клиенты для PHP.
Сергей Жук снова достанет свои Money и, пошарив экран, покажет, как перевести крипту и не остаться с "нонсом".
В этой секции любой участник сможет на 5-10 минут завладеть сценой, поделиться проблемой или решением и получить обратную связь. Кирилл Несмеянов и Антон Морев уже планируют принять участие. Напиши мне, если тоже хочешь выступить.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пых
Пыхап в эту пятницу вечером! Третий митап от канала Пых пройдёт 18 апреля в 18:30 в Лофте Событие на Таганке. Как всегда, мы будем транслировать доклады на YouTube и VK Видео с записью, однако завести полезные знакомства, задать вопросы команде YCLIENTS…
Сегодня вечером состоится третий Пыхап!
🏘 Офлайн
В 18:30, мы будем ждать тебя в лофте «Событие» на Николоямской, 28. Там тебя встретит Инна, будь готов показать ей билет, который пришёл на почту после регистрации.
Если у тебя поменялись планы, ты можешь вернуть билет с полной компенсацией через TimePad. И наоборот, если ты только сегодня надумал прийти, у нас найдутся билеты.
📹 Онлайн
Трансляция начнётся в 19:00 в YouTube, VK Видео и Telegram. Все вопросы из чата я обязательно задам спикеру. По этим же ссылкам Пыхап, как обычно, можно будет посмотреть в записи.
В 18:30, мы будем ждать тебя в лофте «Событие» на Николоямской, 28. Там тебя встретит Инна, будь готов показать ей билет, который пришёл на почту после регистрации.
Если у тебя поменялись планы, ты можешь вернуть билет с полной компенсацией через TimePad. И наоборот, если ты только сегодня надумал прийти, у нас найдутся билеты.
Трансляция начнётся в 19:00 в YouTube, VK Видео и Telegram. Все вопросы из чата я обязательно задам спикеру. По этим же ссылкам Пыхап, как обычно, можно будет посмотреть в записи.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пых
Сегодня вечером состоится третий Пыхап! 🏘 Офлайн В 18:30, мы будем ждать тебя в лофте «Событие» на Николоямской, 28. Там тебя встретит Инна, будь готов показать ей билет, который пришёл на почту после регистрации. Если у тебя поменялись планы, ты можешь…
Пыхап #3
Буквально через несколько минут начнётся третий Пыхап! Залетайте в трансляцию в YouTube, VK Видео и Telegram, комментировать можно прямо под этим постом!
😨 Раскапываем редис
Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация, AOF vs RDB, структуры данных и клиенты для PHP.
⬇️ Слайды
💰 Лайвкодим крипту на PHP
Сергей Жук снова достанет свои Money и, пошарив экран, покажет, как перевести крипту и не остаться с "нонсом".
Получившийся код Серёга выложит после Пыхапа.
🎤 Открытый микрофон (только офлайн)
В этой секции любой участник сможет на 5-10 минут завладеть сценой, поделиться проблемой или решением и получить обратную связь.
💛 Спонсор третьего Пыхапа — YCLIENTS.
Буквально через несколько минут начнётся третий Пыхап! Залетайте в трансляцию в YouTube, VK Видео и Telegram, комментировать можно прямо под этим постом!
Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация, AOF vs RDB, структуры данных и клиенты для PHP.
Сергей Жук снова достанет свои Money и, пошарив экран, покажет, как перевести крипту и не остаться с "нонсом".
Получившийся код Серёга выложит после Пыхапа.
В этой секции любой участник сможет на 5-10 минут завладеть сценой, поделиться проблемой или решением и получить обратную связь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пых
Пыхап #3 Буквально через несколько минут начнётся третий Пыхап! Залетайте в трансляцию в YouTube, VK Видео и Telegram, комментировать можно прямо под этим постом! 😨 Раскапываем редис Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация…
Третий Пыхап прошёл на ура!
Спасибо огромное всем, кто помогал с организацией, кто выступал, кто присутствовал онлайн и офлайн и задавал вопросы.💙
Доклады Алексея и Сергея мы скоро зальём отдельными роликами. Открытый микрофон прошёл так же душевно и разнопланово, как и в прошлый раз:
▸ Антон Морев рассказал, как меняется отношение разработчика к работе и деньгам, когда он начинает свой бизнес.
▸ Сергей Исаков озадачился нехваткой молодых пыхарей и предложил пройти мини-опрос джунам, которые ищут работу на PHP.
▸ Николай Шаповалов посвятил в положение дел в сообществе Drupal.
▸ Кирилл Несмеянов подловил на незнании нескольких особенностей PHP.
Следующий Пыхап мы проведём совместно с Lamoda Tech в июне. Подробности будут чуть позже. До встречи!
Спасибо огромное всем, кто помогал с организацией, кто выступал, кто присутствовал онлайн и офлайн и задавал вопросы.
Доклады Алексея и Сергея мы скоро зальём отдельными роликами. Открытый микрофон прошёл так же душевно и разнопланово, как и в прошлый раз:
▸ Антон Морев рассказал, как меняется отношение разработчика к работе и деньгам, когда он начинает свой бизнес.
▸ Сергей Исаков озадачился нехваткой молодых пыхарей и предложил пройти мини-опрос джунам, которые ищут работу на PHP.
▸ Николай Шаповалов посвятил в положение дел в сообществе Drupal.
▸ Кирилл Несмеянов подловил на незнании нескольких особенностей PHP.
Следующий Пыхап мы проведём совместно с Lamoda Tech в июне. Подробности будут чуть позже. До встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Ищем спикеров для четвёртого Пыхапа × Lamoda Tech в июне
Ориентировочные темы докладов:
• статический анализ в PHP, сравнение с другими языками,
• Rector и плагины,
• проектирование и документация API,
• телеметрия и мониторинг,
• организация кода (Vertical Slice Architecture, coupling/cohesion),
• альтернативные рантаймы (RoadRunner, FrankenPHP, ngx-php),
• CI/CD пайплайны для PHP.
Подать заявку: https://forms.gle/KCggoZFFTZcwoNqq8
_______________
Мы выложили плейлист с докладами последнего Пыхапа: YouTube, VK Видео.
Ориентировочные темы докладов:
• статический анализ в PHP, сравнение с другими языками,
• Rector и плагины,
• проектирование и документация API,
• телеметрия и мониторинг,
• организация кода (Vertical Slice Architecture, coupling/cohesion),
• альтернативные рантаймы (RoadRunner, FrankenPHP, ngx-php),
• CI/CD пайплайны для PHP.
Подать заявку: https://forms.gle/KCggoZFFTZcwoNqq8
_______________
Мы выложили плейлист с докладами последнего Пыхапа: YouTube, VK Видео.
YouTube
Пыхап #3 / 18 апреля
Пыхап — митап про PHP для PHP-разработчиков, их техлидов, тимлидов, архитекторов, техдиректоров и всех, кому небезразличен наш бесконечно умирающий язык. htt...
Forwarded from The Fly's PHP - Делаем из Мухи Слона
Всем, привет! С прошлыми майскими праздниками, и с будущими тоже! 🎉
Во всех PHP сообществах наступила тишина, или все отдыхают, или усердно работают 😄
Так или иначе, под шумок апрельских и майских деньков ворвался и был одобрен RFC по добавлению новых функций для работы с массивами:
Как видно из названий, это функции для получения первого и последнего значения передаваемого массива. Примеры результатов:
И тут возможно возникнет вопрос? Что? Это было добавлено только что, неужели ранее подобных функций не было в PHP, языке в котором есть почти все что угодно для работы с массивами.
И действительно только что. Достаточно вспомнить, что массив в PHP - это монструозный комбайн всего, что только можно придумать. Соответственно метод "влоб" - получения элемента по нулевому индексу, не всегда даст ожидаемый результат:
Заглянем в недалекое прошлое, в 2018 год, PHP 7.3, в то время были приняты такие функции как
Но возможно для кого-то будет новостью, что в том же RFC предлагалось ввести так же такие функции как
Так вот с тех пор получать ключи стало проще, нежели ранешнее
Получение первого и последнего элементов массива тоже стало проще:
А что было до PHP 7.3? Кроме указанного способа по получению ключей, а затем значений, еще с PHP 4, были функции reset() и end(). Были, есть и будут :) И используя их можно получить вполне ожидаемый результат:
так зачем тогда все эти телодвижения по вводу новых функций?
Просто все существующие хитрости,семантически являются неправильным подходом, поскольку они изменяют внутреннее состояние массива. Кроме того, это также не работает должным образом для, например, массива, возвращаемого из функции или других подобных непредусмотренных случаев.
А как вы думаете, нужны ли были эти новые функции или итак по старинке справились бы?❓
Во всех PHP сообществах наступила тишина, или все отдыхают, или усердно работают 😄
Так или иначе, под шумок апрельских и майских деньков ворвался и был одобрен RFC по добавлению новых функций для работы с массивами:
array_first()
и array_last()
в PHP 8.5. Как видно из названий, это функции для получения первого и последнего значения передаваемого массива. Примеры результатов:
array_first([1, 2, 3]); // 1
array_first([2, 3]); // 2
array_first(['a' => 2, 'b' => 1]); // 2
array_first([null, 2, 3]); // null
array_first([]); // null
array_first([$obj, 2, 3]); // $obj
array_first([1])); // 1
array_first([true]); // true
array_last([1, 2, 3]); // 3
array_last([2, 3]); // 3
array_last(['a' => 2, 'b' => 1]); // 1
array_last([2, 3, null]); // null
array_last([]); // null
array_last([2, 3, $obj]); // $obj
array_last([1])); // 1
array_last([true]); // true
И тут возможно возникнет вопрос? Что? Это было добавлено только что, неужели ранее подобных функций не было в PHP, языке в котором есть почти все что угодно для работы с массивами.
И действительно только что. Достаточно вспомнить, что массив в PHP - это монструозный комбайн всего, что только можно придумать. Соответственно метод "влоб" - получения элемента по нулевому индексу, не всегда даст ожидаемый результат:
$array = [
"g" => 456,
2,
4 => "string"
];
var_dump($array[0]); //выдаст 2
[$first] = $array; // какая-нибудь деструктуризация выдаст тоже 2
Заглянем в недалекое прошлое, в 2018 год, PHP 7.3, в то время были приняты такие функции как
array_key_first()
и array_key_last()
.Но возможно для кого-то будет новостью, что в том же RFC предлагалось ввести так же такие функции как
array_value_first()
и array_value_last()
, что логично возвращали бы значения первого и последнего элемента в массиве. Но эти функции были отклоненны, почему, не совсем понятно, может кто-то из подписчиков помнит и знает доподлинную причину отклонения, либо просто время не пришло, и нужны были дополнительные 7 лет для переосознания 😀Так вот с тех пор получать ключи стало проще, нежели ранешнее
array_keys($array)[0]
, а если еще массив был пустым, то обязательная проверка на пустоту или вообще увеличение когнитивной сложности реализации в виде циклов (что-то достаточно приближенно к современному программированию на каком-нибудь golang). Получение первого и последнего элементов массива тоже стало проще:
var_dump($array[array_key_first($array)]); // 456
var_dump($array[array_key_last($array)]); // "string"
А что было до PHP 7.3? Кроме указанного способа по получению ключей, а затем значений, еще с PHP 4, были функции reset() и end(). Были, есть и будут :) И используя их можно получить вполне ожидаемый результат:
var_dump(reset($array)); //456
var_dump(end($array));exit; // "string"
// или те же array_shift, array_pop тоже технически выполнят что нужно
var_dump(array_shift($array)); //456
var_dump(array_pop($array)); // "string"
так зачем тогда все эти телодвижения по вводу новых функций?
Просто все существующие хитрости,семантически являются неправильным подходом, поскольку они изменяют внутреннее состояние массива. Кроме того, это также не работает должным образом для, например, массива, возвращаемого из функции или других подобных непредусмотренных случаев.
А как вы думаете, нужны ли были эти новые функции или итак по старинке справились бы?
Please open Telegram to view this post
VIEW IN TELEGRAM
Пых
Друзья, я долго вынашивал этот план. Заручился поддержкой трёх родных ивент-компаний и сегодня принял окончательное решение: В сентябре у нас будет Пых.Конф! Подробности чуть позже.
Сегодня забронировал площадку.
Пых.Конф пройдёт 19 сентября в Центре Международной Торговли.
Вскоре после майских будет сайт, билеты по стартовой цене и форма подачи доклада.
Пых.Конф пройдёт 19 сентября в Центре Международной Торговли.
Вскоре после майских будет сайт, билеты по стартовой цене и форма подачи доклада.