Forwarded from PHP Fart Time (Алексей roxblnfk)
Ben Ramsey предлагает обновить лицензию PHP.
Вместо старых кастомок перевести Zend на BSD-3, а PHP на BSD-4.
Думаю, Ben Ramsey многим из нас известен благодаря своему пакету ramsey/uuid, который стал де-факто стандартом для UUID, хотя, вероятно, симфонисты о нём уже позабыли и используют
Но знаете ли вы, что Ben пошёл дальше в этом направлении?
- запилил identifier/identifier — набор интерфейсов для идентификаторов.
- зарегистрировал identifier/identifier-implementation — виртуальный пакет идентификаторов.
- и запилил под него свою реализацию ramsey/identifier. Кроме UUID, пакет предоставляет айдишники ULID и SnowFlake.
Сейчас пакеты не имеют стабильного тега, но код
Что будет с
В наших проектах
Спасибо Adam Dyson (@puzzledpolymath) и остальному инициативному сообществу!
Вместо старых кастомок перевести Zend на BSD-3, а PHP на BSD-4.
Думаю, Ben Ramsey многим из нас известен благодаря своему пакету ramsey/uuid, который стал де-факто стандартом для UUID, хотя, вероятно, симфонисты о нём уже позабыли и используют
symfony/uid.Но знаете ли вы, что Ben пошёл дальше в этом направлении?
- запилил identifier/identifier — набор интерфейсов для идентификаторов.
- зарегистрировал identifier/identifier-implementation — виртуальный пакет идентификаторов.
- и запилил под него свою реализацию ramsey/identifier. Кроме UUID, пакет предоставляет айдишники ULID и SnowFlake.
Сейчас пакеты не имеют стабильного тега, но код
ramsey/identifier, как заверяет Ben, довольно стабилен. Всё, что ему осталось сделать до релиза: дописать доку и гайды.Что будет с
ramsey/uuid?Ultimately, what I’d like to do is get ramsey/uuid to start using the identifier/identifier interface and then maybe use ramsey/identifier under the hood, making it easier for folks to start transitioning away from ramsey/uuid.
В наших проектах
ramsey/uuid активно используется и списывать со счетов его рано. Однако, в Cycle ORM уже начата работа над новым пакетом cycle/entity-behavior-identifier на смену старому.Спасибо Adam Dyson (@puzzledpolymath) и остальному инициативному сообществу!
GitHub
GitHub - cycle/entity-behavior-identifier
Contribute to cycle/entity-behavior-identifier development by creating an account on GitHub.
🔥3👍2❤1
Участник сообщества предложил жирный PR, добавляющий UPSERT в Cycle.
Я сейчас сфокусирован на других задачах, поэтому нужна помощь с этой.
Можно ревьювить чисто в своих компетенциях, главное обозначить их в комментарии.
Но желательно знать, что такое UPSERT и как он используется.
Что можно ревьювить:
- API в Query Builder'е.
- Тесты (корректность и полнота тестов).
- Комментарии.
- Кишочки.
На картинке показано, что нажимать, чтобы предлагать изменения: выделяете несколько строк, жмякаете
+, кнопка +- для предложения правок.Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Forwarded from Alexander Makarov
Кто хочет помочь Yii3, но не уверен в своём коде, есть две лёгких, но очень полезных задачи:
- https://github.com/yiisoft/friendly-exception/issues/37
- https://github.com/yiisoft/error-handler/issues/148
Нужно наделать скриншотов, показывающих фичи, и закинуть в README пакетов + оформить в виде pull request.
- https://github.com/yiisoft/friendly-exception/issues/37
- https://github.com/yiisoft/error-handler/issues/148
Нужно наделать скриншотов, показывающих фичи, и закинуть в README пакетов + оформить в виде pull request.
GitHub
Add screenshot to readme · Issue #37 · yiisoft/friendly-exception
Need a nice screenshot from a friendly exception from Yii3 added to README.
👍7
Плагин для IDEA Ultimate / PHPStorm с языковой поддержкой синтаксиса PHP опкодов.
Если у вас есть опкоды и вы не знаете куда их деть, то можно положить в файл с расширением .phpo и плагин сделает подсветку и небольшую навигацию.
На текущий момент сделано достаточно для комфортного чтения опкодов, но в будущем появится и инспекция с анализом ваших опкодов.
Где и как их собирать удобно – это тема для другого плагина. Он уже в паблике, но полноценной интеграции с Opcodes Language нет.
Please open Telegram to view this post
VIEW IN TELEGRAM
JetBrains Marketplace
PHP Opcodes Language - IntelliJ IDEs Plugin | Marketplace
GitHub | Telegram | Donation PHP Opcodes Language support Features: syntax highlightingblock foldingvariable referencesopcodes documentation (soon)rules inspections...
👍4
Dmitrii
#php
Для любителей изучать новые вещи, могу предложить заняться добавлением примеров опкодов для доки при наведении на опкод:
- Открываете сборник опкодов
- Клонируете определение опкода в плагине
- Описываете его назначение и примеры: пхп + опкоды
Готовые опкоды можно взять отсюда, остальные придется искать / изучать исходники
👩💻 Ссылка на файл, в который нужно добавлять
👩💻 Ссылка на php-src со списком последних опкодов
Для любителей изучать новые вещи, могу предложить заняться добавлением примеров опкодов для доки при наведении на опкод:
- Открываете сборник опкодов
- Клонируете определение опкода в плагине
- Описываете его назначение и примеры: пхп + опкоды
Готовые опкоды можно взять отсюда, остальные придется искать / изучать исходники
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Forwarded from Mikhail Savin
Rector-правило для соблюдения AAA паттерна в тестах
По результатам моего опроса почти половина разработчиков пользуются этим паттерном при написании тестов, но я лично периодически забываю "отбивать" секции комментами
Теперь можно делегировать это Rector'у - добавил правило EnforceAaaPatternRector.
Оно просто вставляет комментарии (и удаляет старые, если они неверно расположены), например:
Если же ваши тесты изначально не структурированы под это, то будут мисплейсы. Например, если вы делаете запрос, ассерты на него, потом новый запрос и новые ассерты (так часто тестят валидацию/авторизацию).
Надеюсь, правило поможет сделать такие нарушения более явными на кодревью
По результатам моего опроса почти половина разработчиков пользуются этим паттерном при написании тестов, но я лично периодически забываю "отбивать" секции комментами
Теперь можно делегировать это Rector'у - добавил правило EnforceAaaPatternRector.
Оно просто вставляет комментарии (и удаляет старые, если они неверно расположены), например:
public function testFoo(): void
{
// Arrange
$date = new DateTimeImmutable('2025-01-01');
// Act
$formatted = $date->format('Y-m-d');
// Assert
self::assertEquals('2025-01-01', $formatted);
}
Если же ваши тесты изначально не структурированы под это, то будут мисплейсы. Например, если вы делаете запрос, ассерты на него, потом новый запрос и новые ассерты (так часто тестят валидацию/авторизацию).
Надеюсь, правило поможет сделать такие нарушения более явными на кодревью
Telegram
msavin
Используете AAA (arrange-act-assert/given-when-then) при тестировании?
да / нет / не пишу тесты
да / нет / не пишу тесты
🤔3👍2👎1
Forwarded from gh
Релизик в хату, господа программисты 🎧
https://github.com/wayofdev/laravel-cycle-orm-adapter/releases/tag/v5.0.0
возможно вам будет интересно посмотреть коммит под капотом релиза:
https://github.com/wayofdev/laravel-cycle-orm-adapter/pull/759
Из хайлайтов:
🔧 пофикшены все ci/cd:
• починил psalm
• починил SQL Server тестирование с правильными ODBC драйверами
🗄️ для cycle'истов будет интересен этот файл:
https://github.com/wayofdev/laravel-cycle-orm-adapter/blob/master/.github/workflows/testing-mssql.yml
(тут я сделал полную настройку SQL Server в GitHub Actions с ODBC драйверами, правильными health checks, и совместимостью с ubuntu-latest)
📦 апгрейд зависимостей:
• orchestra/testbench до ^10.0 для Laravel 12 поддержки
• поддержка Laravel 12.x наряду с 10.x и 11.x
🐛 пофикшен баг #752:
• контейнер Laravel теперь возвращает одинаковый инстанс для ORM::class и ORMInterface::class
• больше никаких "duplicate key value violation" ошибок при апдейтах entities
📚 будет интересно для тех кто в PDD и CDD:
• https://github.com/wayofdev/laravel-cycle-orm-adapter/blob/master/.cursor/development-guidelines.md - гайдлайны для AI-assisted разработки с реальными примерами
• https://github.com/wayofdev/laravel-cycle-orm-adapter/blob/master/.cursor/testing-guidelines.md - гайдлайны для агентного тестирования
(эти файлы дают готовые паттерны для эффективной разработки с AI ассистентами, TDD подходы для багфиксов, Docker workflows, multi-database тестирование, и best practices из реального опыта проекта)
cc: @roxblnfk @butschster
cc: https://github.com/wayofdev/laravel-cycle-orm-adapter
может ли автор выпустить релиз с laravel 12 фиксом?
https://github.com/wayofdev/laravel-cycle-orm-adapter/releases/tag/v5.0.0
возможно вам будет интересно посмотреть коммит под капотом релиза:
https://github.com/wayofdev/laravel-cycle-orm-adapter/pull/759
Из хайлайтов:
🔧 пофикшены все ci/cd:
• починил psalm
• починил SQL Server тестирование с правильными ODBC драйверами
🗄️ для cycle'истов будет интересен этот файл:
https://github.com/wayofdev/laravel-cycle-orm-adapter/blob/master/.github/workflows/testing-mssql.yml
(тут я сделал полную настройку SQL Server в GitHub Actions с ODBC драйверами, правильными health checks, и совместимостью с ubuntu-latest)
📦 апгрейд зависимостей:
• orchestra/testbench до ^10.0 для Laravel 12 поддержки
• поддержка Laravel 12.x наряду с 10.x и 11.x
🐛 пофикшен баг #752:
• контейнер Laravel теперь возвращает одинаковый инстанс для ORM::class и ORMInterface::class
• больше никаких "duplicate key value violation" ошибок при апдейтах entities
📚 будет интересно для тех кто в PDD и CDD:
• https://github.com/wayofdev/laravel-cycle-orm-adapter/blob/master/.cursor/development-guidelines.md - гайдлайны для AI-assisted разработки с реальными примерами
• https://github.com/wayofdev/laravel-cycle-orm-adapter/blob/master/.cursor/testing-guidelines.md - гайдлайны для агентного тестирования
(эти файлы дают готовые паттерны для эффективной разработки с AI ассистентами, TDD подходы для багфиксов, Docker workflows, multi-database тестирование, и best practices из реального опыта проекта)
cc: @roxblnfk @butschster
cc: https://github.com/wayofdev/laravel-cycle-orm-adapter
может ли автор выпустить релиз с laravel 12 фиксом?
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Release v5.0.0 · wayofdev/laravel-cycle-orm-adapter
5.0.0 (2025-09-28)
⚠ BREAKING CHANGES
support for Laravel 12 and PHP 8.4
support for Laravel 12 and PHP 8.4
Features
prepare for laravel 12 and php 8.4 release (0951537)
support for Laravel 12 a...
⚠ BREAKING CHANGES
support for Laravel 12 and PHP 8.4
support for Laravel 12 and PHP 8.4
Features
prepare for laravel 12 and php 8.4 release (0951537)
support for Laravel 12 a...
👍10❤1🤮1
Forwarded from PHP Fart Time (Алексей roxblnfk)
Hacktoberfest
Hacktoberfest 2025
Hacktoberfest: a month-long celebration of open-source projects, their maintainers, and the entire community of contributors.
Начался Hacktoberfest 2025
Если выполнить задачи в числе первых
Однако, пофиг на футболку. Давайте просто делать Open Source вместе, хотя бы в этот месяц.
Пара советов:
Советую любой вклад в репозиторий начинать с обсуждения:
- Написать в Issue, что собираетесь взять задачу на себя и уточнить, есть ли вещи, на которые стоит обратить внимание.
- Найти ответственного и пнуть в чате.
- Обсудить объём работ, чтобы не делать всё или не попасть в ситуацию, когда часть работы уже сделана где-то ещё.
По Pull Request советую:
- Не делать то, что выходит за рамки Issue, не изменять левые файлы.
- Не делать Force Push, особенно после ревью.
- Не делать большие PR. Это в продуктовых проектах большие изменения проходят с меньшими замечаниями. В опенсорсе большой PR == больше работы для ревьювера.
Вот пара направлений сходу:
1. @terabytesoftw из Yiisoft докладывает: сейчас Yii2 покрыт тестами на 75%. Давайте добьём до 100%.
2. Подгон от @butschster: ишуи с тегом Good First Issue в репозитории CTX и for-contributors в Buggregator.
3. Ну а я буду просто очень счастлив, если кто-то доделает этот PR (можно прыгнуть на ветку автора, запушить её в свой форк, доделать и затем сделать новый PR)
В PHP сообществе есть ещё пара мест:
- Общий канал по пыховому опенсорсу, в который можно прийти и как мейнтейнер (хранитель кодовой базы), и как контрибьютор (участник, вкладчик).
- Тема опенсорса в нашем чатике, где можно полулзить или обсудить что-то посложнее, чем Good first issue.
———
Кстати, открытое ПО тесно связано со свободными лицензиями.
И тут возникли мысли, а не пора ли нам с Павлом везде внедрять эту лицензию?
PS: Спасибо Владу Шашкову, который следовал этой лицензии и угощал меня пивом на ПыхКонф'2025 🍻
Если выполнить задачи в числе первых
10_000 участников, то можно выиграть футболку. Но в РФ её всё-равно не доставят.Однако, пофиг на футболку. Давайте просто делать Open Source вместе, хотя бы в этот месяц.
Пара советов:
Советую любой вклад в репозиторий начинать с обсуждения:
- Написать в Issue, что собираетесь взять задачу на себя и уточнить, есть ли вещи, на которые стоит обратить внимание.
- Найти ответственного и пнуть в чате.
- Обсудить объём работ, чтобы не делать всё или не попасть в ситуацию, когда часть работы уже сделана где-то ещё.
По Pull Request советую:
- Не делать то, что выходит за рамки Issue, не изменять левые файлы.
- Не делать Force Push, особенно после ревью.
- Не делать большие PR. Это в продуктовых проектах большие изменения проходят с меньшими замечаниями. В опенсорсе большой PR == больше работы для ревьювера.
Вот пара направлений сходу:
1. @terabytesoftw из Yiisoft докладывает: сейчас Yii2 покрыт тестами на 75%. Давайте добьём до 100%.
PR is welcome
2. Подгон от @butschster: ишуи с тегом Good First Issue в репозитории CTX и for-contributors в Buggregator.
3. Ну а я буду просто очень счастлив, если кто-то доделает этот PR (можно прыгнуть на ветку автора, запушить её в свой форк, доделать и затем сделать новый PR)
В PHP сообществе есть ещё пара мест:
- Общий канал по пыховому опенсорсу, в который можно прийти и как мейнтейнер (хранитель кодовой базы), и как контрибьютор (участник, вкладчик).
- Тема опенсорса в нашем чатике, где можно полулзить или обсудить что-то посложнее, чем Good first issue.
———
Кстати, открытое ПО тесно связано со свободными лицензиями.
И тут возникли мысли, а не пора ли нам с Павлом везде внедрять эту лицензию?
PS: Спасибо Владу Шашкову, который следовал этой лицензии и угощал меня пивом на ПыхКонф'2025 🍻
🔥4👍2
Infection довольно круто инструменты для проведения мутационных тестов: если тесты проходят, то библиотека меняет исходных код и запускает ваши тесты заново.
Работает здорово, становится всё быстрее, но нет поддержки в IDE.
Я сделал плагин для запуска Infection и раскраски текста в редакторе в красный с обозначением что за тест упал.
Однако, более логичным было бы сделать инструменты как для запуска PHPUnit/Codeception.
Они не делают отдельных интеграций, а используют формат TeamCity для логирования в stdout. Этот лог кушает IDEA, вырезает (для удобства чтения) и строит по нему дерево тестов и их ошибки.
Вот для Infection такого логгера сейчас нет.
Автор сделает, но ближе к концу недели скорее всего.
Если у вас есть силы и желание законтрибьютить в Infection, то переходим по ссылке и хватаем тикет.
https://github.com/infection/infection/issues/2446
TeamCity: https://www.jetbrains.com/help/teamcity/2025.07/service-messages.html#Nested+Test+Reporting
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
TeamCity formatter · Issue #2446 · infection/infection
Original discussion in #2437 TeamCity format should write to an output service messages, which service message follows the rules The best way to follow the following output format: ##teamcity[<m...
👍4🔥4
Dmitrii
Есть задачка посложнее.
Нужно добавить поддержку игнорирования мутаторов:
- infection-ignore-next-line
- infection-disable
Пример:
👩💻 https://github.com/infection/infection/issues/1231
Нужно добавить поддержку игнорирования мутаторов:
- infection-ignore-next-line
- infection-disable
Пример:
/** @infection-disable GreaterThan */
while ($a > $b) {
}
@infection-ignore-all уже реализована, поэтому можно взять за референс.Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Exclude certain lines or sections of code from MT not excluding them from coverage · Issue #1231 · infection/infection
Implementation status @infection-ignore-all on statement level, ignores all and every mutation in a node and below (#1468) @infection-ignore-next-line on line level, same as above but only for spec...
👍2
Forwarded from Пых (Валентин Удальцов)
Каждый, кто пишет на Golang, наверняка слышал про NATS. Это платформа для обмена сообщениями, состоящая из двух основных частей: Core NATS (publish-subscribe с at-most-once гарантией и request-reply) и JetStream (персистентные стримы а-ля Kafka).
Мы написали новый неблокирующий драйвер для NATS под PHP, который поддерживает все основные возможности платформы:
• publish-subscribe,
• request-reply,
• jetstream,
• key-value хранилище,
• объектное хранилище,
• атомарные счётчики на основе CRDT,
• пакетная публикация,
• планировка сообщений.
composer require thesis/nats
$nats = new Nats\Client(Nats\Config::default());
$nats->subscribe('foo.*', static function (Nats\Delivery $delivery): void {
dump("Received message: {$delivery->message->payload}");
});
$nats->publish('foo.bar', new Nats\Message('Hello World!'));
Текущий релиз — 0.2.0, но некоторые уже используют драйвер в продакшне! К мажору шлифанём по мелочи и добавим поддержку NATS Service.
GitHub | Thesis Community | nats.io
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - thesis-php/nats: Non-blocking (fiber based) client for Nats.
Non-blocking (fiber based) client for Nats. Contribute to thesis-php/nats development by creating an account on GitHub.
🔥8🤨2❤1
Forwarded from Danil Shutsky
Сегодня состоялся релиз open-source админки MoonShine v4!
Вкратце по нововведениям рассказывается (и показывается) в этом промо-ролике:
https://youtu.be/3BXkf6WYEJ8
А вечером в 19:00 (мск) будет прямой эфир, где автор (Данил Щуцкий) всё подробно расскажет! Из основного:
- новый дизайн и вёрстка
- генератор палитр для MoonShine - создавать цветовые схемы теперь просто
- TailwindCSS обновлён до версии 4
- новая архитектура
- FortyFive - AI-powered инструмент для быстрой разработки админок на базе MoonShine
- и многое другое!
11 ноября в 19:00 (мск) на CutCode!
https://www.youtube.com/live/ynKqr9zxDzk?si=1aulrPoZ_hpH-clI
Вкратце по нововведениям рассказывается (и показывается) в этом промо-ролике:
https://youtu.be/3BXkf6WYEJ8
А вечером в 19:00 (мск) будет прямой эфир, где автор (Данил Щуцкий) всё подробно расскажет! Из основного:
- новый дизайн и вёрстка
- генератор палитр для MoonShine - создавать цветовые схемы теперь просто
- TailwindCSS обновлён до версии 4
- новая архитектура
- FortyFive - AI-powered инструмент для быстрой разработки админок на базе MoonShine
- и многое другое!
11 ноября в 19:00 (мск) на CutCode!
https://www.youtube.com/live/ynKqr9zxDzk?si=1aulrPoZ_hpH-clI
YouTube
Промо MoonShine v4
Ну что, коллеги!
Вот и настал день релиза MoonShine v4! Действительно получился крутой релиз с новыми современными возможностями и интеграцией AI.
Всё покажу в прямом эфире, всё обсудим подробно! Из основного:
- новый дизайн и вёрстка
- генератор палитр для…
Вот и настал день релиза MoonShine v4! Действительно получился крутой релиз с новыми современными возможностями и интеграцией AI.
Всё покажу в прямом эфире, всё обсудим подробно! Из основного:
- новый дизайн и вёрстка
- генератор палитр для…
🔥17
True Async PHP
Edmond Dantes призывает всех к обсуждению особенностей реализации нашумевшего True Async RFC.
Если вы делаете фреймворки или библиотеки, которые работают (или хотелось бы) с асинхронностью; пишите на других языках с поддержкой асинхронности и параллелизма или просто хотите что-то добавить дельного, то заходите в обсуждение.
Чем быстрее закроются все вопросы, опасения и корнер кейсы, тем быстрее PHP начнет нагинать Go!
Цитата Edmond’а:
👩💻 https://github.com/true-async/php-true-async-rfc/discussions/8
Edmond Dantes призывает всех к обсуждению особенностей реализации нашумевшего True Async RFC.
Если вы делаете фреймворки или библиотеки, которые работают (или хотелось бы) с асинхронностью; пишите на других языках с поддержкой асинхронности и параллелизма или просто хотите что-то добавить дельного, то заходите в обсуждение.
Чем быстрее закроются все вопросы, опасения и корнер кейсы, тем быстрее PHP начнет нагинать Go!
Цитата Edmond’а:
Итак господа все желающие, приглашаю вас к обсуждению. На текущем этапе считаем, что никакого RFC не было. В теме ключевой вопрос. Он видимо и будет обсуждаться ближайшее время.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Memory model and its impact on refactoring · true-async php-true-async-rfc · Discussion #8
Memory model and its impact on refactoring At this stage of the discussion, I propose focusing on one of the three main questions. 🔑 Key Questions 1. Choosing the Coroutine Model How coroutines sho...
🔥10👍6👾1