Open Source: PHP – Telegram
Open Source: PHP
408 subscribers
3 photos
49 links
Помощь Open Source продуктам на PHP
Download Telegram
Forwarded from Alexander Makarov
Кто хочет помочь Yii3, но не уверен в своём коде, есть две лёгких, но очень полезных задачи:

- https://github.com/yiisoft/friendly-exception/issues/37
- https://github.com/yiisoft/error-handler/issues/148

Нужно наделать скриншотов, показывающих фичи, и закинуть в README пакетов + оформить в виде pull request.
👍7
🖼️ PHP Opcodes Language

Плагин для IDEA Ultimate / PHPStorm с языковой поддержкой синтаксиса PHP опкодов.

Если у вас есть опкоды и вы не знаете куда их деть, то можно положить в файл с расширением .phpo и плагин сделает подсветку и небольшую навигацию.

На текущий момент сделано достаточно для комфортного чтения опкодов, но в будущем появится и инспекция с анализом ваших опкодов.

Где и как их собирать удобно – это тема для другого плагина. Он уже в паблике, но полноценной интеграции с Opcodes Language нет.


🔤🔤 https://plugins.jetbrains.com/plugin/27833-php-opcodes-language
👩‍💻 https://github.com/xepozz/php-opcodes-language-plugin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Dmitrii
🖼️ PHP Opcodes Language Плагин для IDEA Ultimate / PHPStorm с языковой поддержкой синтаксиса PHP опкодов. Если у вас есть опкоды и вы не знаете куда их деть, то можно положить в файл с расширением .phpo и плагин сделает подсветку и небольшую навигацию. …
#php

Для любителей изучать новые вещи, могу предложить заняться добавлением примеров опкодов для доки при наведении на опкод:

- Открываете сборник опкодов
- Клонируете определение опкода в плагине
- Описываете его назначение и примеры: пхп + опкоды

Готовые опкоды можно взять отсюда, остальные придется искать / изучать исходники

👩‍💻 Ссылка на файл, в который нужно добавлять
👩‍💻 Ссылка на php-src со списком последних опкодов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Forwarded from Mikhail Savin
Rector-правило для соблюдения AAA паттерна в тестах

По результатам моего опроса почти половина разработчиков пользуются этим паттерном при написании тестов, но я лично периодически забываю "отбивать" секции комментами

Теперь можно делегировать это 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);
}


Если же ваши тесты изначально не структурированы под это, то будут мисплейсы. Например, если вы делаете запрос, ассерты на него, потом новый запрос и новые ассерты (так часто тестят валидацию/авторизацию).
Надеюсь, правило поможет сделать такие нарушения более явными на кодревью
🤔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 фиксом?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101🤮1
Forwarded from PHP Fart Time (Алексей roxblnfk)
Начался Hacktoberfest 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 – библиотека для мутационных тестов

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
👍4🔥4
Forwarded from Пых (Валентин Удальцов)
🤎 Драйвер для NATS от Thesis!

Каждый, кто пишет на 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. А ещё после статьи на Reddit нам поставил звезду Ocramius. 😅

GitHub | Thesis Community | nats.io
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8🤨21
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
🔥17
True Async PHP

Edmond Dantes призывает всех к обсуждению особенностей реализации нашумевшего True Async RFC.

Если вы делаете фреймворки или библиотеки, которые работают (или хотелось бы) с асинхронностью; пишите на других языках с поддержкой асинхронности и параллелизма или просто хотите что-то добавить дельного, то заходите в обсуждение.

Чем быстрее закроются все вопросы, опасения и корнер кейсы, тем быстрее PHP начнет нагинать Go!

Цитата Edmond’а:
Итак господа все желающие, приглашаю вас к обсуждению. На текущем этапе считаем, что никакого RFC не было. В теме ключевой вопрос. Он видимо и будет обсуждаться ближайшее время.



👩‍💻 https://github.com/true-async/php-true-async-rfc/discussions/8
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6👾1