Forwarded from Пых (Валентин Удальцов)
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, 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
👍5❤4🔥2
Всем, привет! С прошлыми майскими праздниками, и с будущими тоже! 🎉
Во всех 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
🔥21👍13❤4
Forwarded from PHP Fart Time (Алексей roxblnfk)
Очередная токсик среда.
Как не хотелось не трогать сам PHP, но придётся, потому что моя жепь с этого немного подгорела на #RandomBeer в предыдущую пятницу.
PHP Lazy Objects
Как не хотелось не трогать сам PHP, но придётся, потому что моя жепь с этого немного подгорела на #RandomBeer в предыдущую пятницу.
PHP Lazy Objects
triangular-octopus-0f6 on Notion
PHP Lazy Objects | Notion
В PHP 8.4 добавили ленивые объекты и прокси (RFC , дока).
😢3🤬1
Forwarded from Пых (Валентин Удальцов)
К сожалению, на подготовку условия задачи и настройку Хобота на приём ответов потребовалось больше времени, чем мы ожидали. Поэтому мы переносим конкурс на 19:30 — приезжайте домой с работы, подписывайтесь на Пых.конф’25 и будьте готовы!
👍2
Forwarded from PHP Digest
С днем рождения, PHP! 🎉🐘💜
Мы сделали крутого лего слоника специально к 30-летию PHP:
https://www.youtube.com/watch?v=mmsKDVAvrbw
Будем разыгрывать несколько таких на PHPverse 17 июня:
https://lp.jetbrains.com/phpverse-2025/
Это бесплатный онлайн ивент от команды PhpStorm. Вернее ивент на самом деле офлайн — почти все ребятки из PHP Foundation, а также еще несколько core контрибьюторов PHP, и ребятки из сообщества приезжают в Амстердам в офис JetBrains.
Будем транслировать доклады Тейлора (Laravel), Николаса Грекаса (Symfony), Кевина Дунгласа (FrankenPHP) и других ребяток. Еще запишем всякого закулисья и выложим позже. Регистрируйтесь, чтоб не пропустить.
Ну а сегодня смотрим стрим на CutCode: https://www.youtube.com/live/85xnTYzVtgw
Мы сделали крутого лего слоника специально к 30-летию PHP:
https://www.youtube.com/watch?v=mmsKDVAvrbw
Будем разыгрывать несколько таких на PHPverse 17 июня:
https://lp.jetbrains.com/phpverse-2025/
Это бесплатный онлайн ивент от команды PhpStorm. Вернее ивент на самом деле офлайн — почти все ребятки из PHP Foundation, а также еще несколько core контрибьюторов PHP, и ребятки из сообщества приезжают в Амстердам в офис JetBrains.
Будем транслировать доклады Тейлора (Laravel), Николаса Грекаса (Symfony), Кевина Дунгласа (FrankenPHP) и других ребяток. Еще запишем всякого закулисья и выложим позже. Регистрируйтесь, чтоб не пропустить.
Ну а сегодня смотрим стрим на CutCode: https://www.youtube.com/live/85xnTYzVtgw
YouTube
Happy Birthday PHP! I'm building LEGO elephpant!
Want a lego elephpant? 🐘💜
We'll be giving away a few at PHPverse -- a free online event to celebrate PHP's 30th anniversary:
https://lp.jetbrains.com/phpverse-2025/
We'll be giving away a few at PHPverse -- a free online event to celebrate PHP's 30th anniversary:
https://lp.jetbrains.com/phpverse-2025/
🔥10❤2👍1
Валентин Удальцов и канал Пых открыли продажу билетов на Пых.конф 2025, думаю билеты долго висеть не будут)) разбираем пока есть возможность
P.S. Я свой уже взял)
P.S. Я свой уже взял)
🔥3
Forwarded from Пых.конф’25 — главное PHP-событие этого года!
Media is too big
VIEW IN TELEGRAM
Пых.конф — новая PHP-конференция для всех от автора канала Пых Валентина Удальцова.
Единый язык. Кто-то из нас пишет на Yii и Laravel, другие выбирают Битрикс и WordPress, третьи экспериментируют с AMPHP и Swoole. Проекты разные. Подходы разные. Но язык один — PHP. Пых.конф даёт слово каждому!
Пространство PHP. Пых.конф объединяет русскоязычное PHP-сообщество в одной точке. Здесь делятся опытом, находят единомышленников и обсуждают, как проектировать, разрабатывать и поддерживать любые бэкенды на PHP.
Сегодня мы запускаем сайт и открываем продажи билетов по цене для ранних пташек!
Заходи на conf.phpyh.ru и забирай свой билет за 10 000 руб. до 10 июня 14:00!
YouTube | VK Видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2👀1
Forwarded from Пых (Валентин Удальцов)
В PHP 8.5 наконец-то будет clone with!
Как-то незаметно в PHP 8.5 приняли долгожданный RFC https://wiki.php.net/rfc/clone_with_v2.
1. Клонирование теперь не только языковая конструкция, но и функция
2. Вторым аргументом можно передать новые значения свойств для склонированного экземпляра. Переопределить можно любые видимые в текущей области свойства, в том числе
Почему это важная фича и как без неё обходиться прямо сейчас, подробно рассказал Brent Roose в ролике📹 Cloning Readonly Classes in PHP 8.2.
____________
До конца завтрашнего дня билеты на Пых.конф’25 всего по 12 000 рублей!
Как-то незаметно в PHP 8.5 приняли долгожданный RFC https://wiki.php.net/rfc/clone_with_v2.
1. Клонирование теперь не только языковая конструкция, но и функция
clone(object $object, array $withProperties = []): object. Благодаря этому можно писать array_map(clone(...), $myObjects).2. Вторым аргументом можно передать новые значения свойств для склонированного экземпляра. Переопределить можно любые видимые в текущей области свойства, в том числе
readonly, что наконец-то даёт нам полный инструментарий для работы с иммутабельными структурами:
final readonly class Request
{
public function __construct(
public string $path = '',
public array $headers = [],
) {}
public function withPath(string $path): self
{
return clone($this, ['path' => $path]);
}
public function withHeader(string $name, string $value): self
{
return clone($this, ['headers' => [
...$this->headers,
$name => $value,
]]);
}
}
new Request()
->withPath('/phpyh')
->withHeader('Content-Type', 'application/json');
Почему это важная фича и как без неё обходиться прямо сейчас, подробно рассказал Brent Roose в ролике
____________
До конца завтрашнего дня билеты на Пых.конф’25 всего по 12 000 рублей!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥5❤2
Forwarded from Пых.конф’25 — главное PHP-событие этого года!
Заканчиваем приём заявок на доклады
Завтра в 18:00 мы закроем подачу заявок на доклады на Пых.конф’25. Если у тебя есть идея для выступления — самое время закинуть её в Хобота! Мы рассматриваем все тезисы и помогаем с их доработкой.
Пожалуйста, перешли это сообщение в чат коллегам, вдруг они не знали.
Завтра в 18:00 мы закроем подачу заявок на доклады на Пых.конф’25. Если у тебя есть идея для выступления — самое время закинуть её в Хобота! Мы рассматриваем все тезисы и помогаем с их доработкой.
Пожалуйста, перешли это сообщение в чат коллегам, вдруг они не знали.
conf.phpyh.ru
Пых.конф’25
Новая PHP-конференция для всех
👍3
Forwarded from Пых.конф’25 — главное PHP-событие этого года!
Мы выложили всю программу!
Несколько тем для затравки:
• PHP True Async: Асинхронность из коробки
• Нестандартное управление памятью в PHP
• Как писать неблокирующие клиенты на PHP
• Переход с Laravel на Swoole+Hyperf
• RAG: Внедряем AI в PHP-бэкенд
• Внутри Yii3
• YDB: от SQL к распределённому SQL
⚡️ https://conf.phpyh.ru/program
Успей купить билет по июльской цене за 13 500 рублей!
Несколько тем для затравки:
• PHP True Async: Асинхронность из коробки
• Нестандартное управление памятью в PHP
• Как писать неблокирующие клиенты на PHP
• Переход с Laravel на Swoole+Hyperf
• RAG: Внедряем AI в PHP-бэкенд
• Внутри Yii3
• YDB: от SQL к распределённому SQL
Успей купить билет по июльской цене за 13 500 рублей!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤4
Forwarded from Пых.конф’25 — главное PHP-событие этого года!
PHP сегодня в самом расцвете сил:
• 20 человек в ядре, финансируемых PHP Foundation.
• Релизы каждый год с десятками новых фичей.
• Async, типизация, атрибуты, выразительный синтаксис.
• Обслуживает миллиарды пользователей по всему миру.
Оставалась только одна проблема — русскоязычным инженерам не хватало пространства для обсуждения этим тем. Мы её решили.
Пых.конф — абсолютно новая конференция с актуальной программой, доступными билетами и насыщенным offstage-движем.
• Асинхронность и протоколы для неблокирующего I/O.
• RAG в PHP-бэкендах и круглый стол «Кодим с ИИ».
• Архитектурные каноны: DDD, модульность, идемпотентность.
• Производительность: от памяти и массивов до воркеров и CI.
• Yii3, Doctrine, Swoole, WordPress и Битрикс — экосистема во всей красе.
• Не только PHP: YDB, Postgres, Docker, OpenAPI.
• Fail-митап и Открытый микрофон для всех, кто захочет высказаться.
• Игры и конкурсы на стендах партнёров — компаний, преданных PHP.
Мы сделали то, чего сами ждали много лет. Не хватает только тебя.
Забрать билет | Ничего не пропустить | Собрать свою программу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🎉4👍3
Forwarded from Пых (Валентин Удальцов)
Только что на php.net опубликовали PHP 8.5!
Тег уже два дня как стоит, но я ждал финального аккорда.
По этому поводу держите мой доклад со Стачки «PHP 8.5 не сбавляет темп!». Из него вы узнаете про основные фичи новой версии и нюансы их применения.
Основные таймкоды:
01:04 Все способы получения первого элемента массива в PHP (в т. ч. бредовые)
05:20 Pipe operator v3
10:56 URL Api
17:20 Clone with v2
21:24 #[NoDiscard]
24:07 Closure и FCC в константных выражениях
27:57 Persistent cURL handles
29:33 Асимметричная видимость статических свойств
30:00 Рекурсивные замыкания
37:41 Типизируем array_first()
https://youtu.be/OIFbU5oypig
https://vkvideo.ru/video-228746873_456239122
https://php.net/releases/8.5/ru.php
Тег уже два дня как стоит, но я ждал финального аккорда.
По этому поводу держите мой доклад со Стачки «PHP 8.5 не сбавляет темп!». Из него вы узнаете про основные фичи новой версии и нюансы их применения.
Основные таймкоды:
01:04 Все способы получения первого элемента массива в PHP (в т. ч. бредовые)
05:20 Pipe operator v3
10:56 URL Api
17:20 Clone with v2
21:24 #[NoDiscard]
24:07 Closure и FCC в константных выражениях
27:57 Persistent cURL handles
29:33 Асимметричная видимость статических свойств
30:00 Рекурсивные замыкания
37:41 Типизируем array_first()
https://youtu.be/OIFbU5oypig
https://vkvideo.ru/video-228746873_456239122
https://php.net/releases/8.5/ru.php
YouTube
PHP 8.5 не сбавляет темп! / Валентин Удальцов / Стачка, 3 октября 2025
Слайды: http://vudaltsov.github.io/php8.5-slides/
После насыщенного PHP 8.4 (property hooks, aviz, lazy objects, BCMath\Number) казалось, что должен случиться перерыв...
Но не тут-то было:
- pipe operator,
- clone with,
- aviz для статических свойств,
…
После насыщенного PHP 8.4 (property hooks, aviz, lazy objects, BCMath\Number) казалось, что должен случиться перерыв...
Но не тут-то было:
- pipe operator,
- clone with,
- aviz для статических свойств,
…
❤3🔥3👍2