🚀 b24phpsdk 1.2.0
Ключевые изменения
— добавлена поддержка компаний
— добавлена поддержка перечислений
— в CI добавлена проверка зависимостей на соответствие лиценизиям
— исправлено 100500 ошибок в аннотациях типов и возвращаемых результатах (простите, без этого никак), в интеграционные тесты добавлены специальные методы:
Теперь следующие релизы sdk будут тестироваться и на такие вот вещи и это потенциально снизит человеческий фактор, когда вендор добавил поле, а ты забыл его аннотировать.
Огромное спасибо Валентину Удальцову, автору канала https://news.1rj.ru/str/phpyh за библиотеку
— потихоньку заносим PhpCsFixer
— много минорных правок
Статистика по покрытию
https://github.com/bitrix24/b24phpsdk/releases/tag/1.2.0
Ключевые изменения
— добавлена поддержка компаний
CRM\Company\Service и связанных сущностей CRM\Company\Service\CompanyUserfield, CRM\Company\Service\CompanyCompanyContact и т.д.— добавлена поддержка перечислений
CRM\Enum\Service\Enum— в CI добавлена проверка зависимостей на соответствие лиценизиям
MIT, BSD-3-Clause, Apache.— исправлено 100500 ошибок в аннотациях типов и возвращаемых результатах (простите, без этого никак), в интеграционные тесты добавлены специальные методы:
assertBitrix24AllResultItemFieldsAnnotated - проверяет, что в phpdoc аннотации перечислены все поля возвращаемые методом *.fieldsassertBitrix24AllResultItemFieldsHasValidTypeAnnotation - проверяет, что тип из phpdoc-аннотации правильно маппится на тип уже на уровне PHP.Теперь следующие релизы sdk будут тестироваться и на такие вот вещи и это потенциально снизит человеческий фактор, когда вендор добавил поле, а ты забыл его аннотировать.
Огромное спасибо Валентину Удальцову, автору канала https://news.1rj.ru/str/phpyh за библиотеку
typhoon/reflection вся эта магия работает поверх неё. Следующий шаг — сделать автоматический вывод возвращаемых типов на основании данных из аннотации, а не как сейчас — по символьному коду поля 🫠.— потихоньку заносим PhpCsFixer
— много минорных правок
Статистика по покрытию
Bitrix24 API-methods count: 1135
Supported in bitrix24-php-sdk methods count: 191
Coverage percentage: 16.83% 🚀
Supported in bitrix24-php-sdk methods with batch wrapper count: 22
https://github.com/bitrix24/b24phpsdk/releases/tag/1.2.0
5🔥9
Forwarded from Сергей Предводителев
🌿 Про статические анализаторы и входящие данные в библиотеках
Использование статических анализаторов существенно повышает качество кода, но при использовании их в библиотеках нужно учитывать один важный нюанс — нельзя доверять типу входящих данных.
В приложении мы можем использовать расширенную типизацию (в случае PHP и Psalm — с помощью аннотаций) для параметров функций, методов, конструкторов классов и быть уверенными, что параметры будут ожидаемых типов (конечно же если не забываем запускать статический анализ, а ещё лучше настроили его в CI).
Например, у нас есть класс, который в конструкторе ожидает массив из объектов и мы указываем это в аннотации:
Но если тот же самый класс мы решим вынести в библиотеку, то у нас сразу исчезает уверенность, что параметр
• могут не использовать статические анализаторы,
• могут использовать другой анализатор.
А это значит, что ошибка будет обнаружена, возможно, не сразу и совсем в другом месте, так как код библиотеки будет работать неожиданным образом.
❗️В библиотеках все входящие параметры нужно проверять и не полагаться на статический анализ.
Использование статических анализаторов существенно повышает качество кода, но при использовании их в библиотеках нужно учитывать один важный нюанс — нельзя доверять типу входящих данных.
В приложении мы можем использовать расширенную типизацию (в случае PHP и Psalm — с помощью аннотаций) для параметров функций, методов, конструкторов классов и быть уверенными, что параметры будут ожидаемых типов (конечно же если не забываем запускать статический анализ, а ещё лучше настроили его в CI).
Например, у нас есть класс, который в конструкторе ожидает массив из объектов и мы указываем это в аннотации:
final class Test {
/**
* @param object[] $objects
*/
public function __construct(array $objects) {
// ...
}
}
При попытке создать объект с аргументами, которые соответствуют типизации языка, но не соответствуют расширенной типизации (например, new Test([1, 2]);), анализатор выдаст ошибку.Но если тот же самый класс мы решим вынести в библиотеку, то у нас сразу исчезает уверенность, что параметр
$objects будет именно массивом объектов. Разработчики, использующие нашу библиотеку:• могут не использовать статические анализаторы,
• могут использовать другой анализатор.
А это значит, что ошибка будет обнаружена, возможно, не сразу и совсем в другом месте, так как код библиотеки будет работать неожиданным образом.
❗️В библиотеках все входящие параметры нужно проверять и не полагаться на статический анализ.
🔥1🤯1
🚀 b24phpsdk 1.3.0
➕Добавлено
— поддержка PHP 8.4
— метод Services\Main\Service::guardValidateCurrentAuthToken проверяющий, что идет работа с валидным OAUTH сервером.
— скоуп entity
— сервис Services\Entity\Service\Item
— сервис Services\Entity\Service\Entity
— скоупы humanresources.hcmlink и sign.b2e
— метод Core\Credentials\Scope::contains
— метод Core\Credentials\Scope::getAvailableScopeCodes
— сервис Services\CRM\VatRates\Service\Vat
— сервис Services\CRM\Contact\Service\ContactCompany
— сервис Services\CRM\Requisites\Service\Requisite
— сервис Services\CRM\Requisites\Service\RequisitePreset
— сервис Services\User\Service\Batch
— сервис Services\AI\Engine\Service\Engine
— класс Core\Exceptions\LogicException
DX: консольная команда b24-dev:show-sdk-coverage-statistics
DX: класс Bitrix24\SDK\Deprecations\DeprecatedMethods со списком методов, которые помечены как депрекейтед
DX: все консольные команды исполняются в докер-контейнере php-cli
DX: добавлено кеширование конфига phpstan
DX: добавлена статья «How to Contribute to Bitrix24 PHP SDK»
🪚Изменено
— добавлеен nullable аргумент $scope в методе Bitrix24\SDK\Attributes\Services::getSupportedInSdkApiMethods,
— изменения в методе Application\Contracts\Bitrix24Accounts\Entity::updateApplicationVersion
— ошибки в Bitrix24AccountInterfaceTest, изменены сигнатуры вызовов
🧰 Исправлено
— ошибка в Bitrix24\SDK\Core\Batch для методов: user.get, entity.item.get, entity.item.update
— ошибка в Bitrix24\SDK\Core\ApiClient
— ошибки в ApplicationInstallationRepositoryInterfaceTest
🔐Безопасность
- Добавлен метод Services\Main\Service::guardValidateCurrentAuthToken для проверки авторизационного токена путем вызова метода app.info на OAUTH сервере вендора. Можно использовать для проверки входящих токенов из плейсментов и событий для коробочных инсталляций.
➖Удалено
❗примеры выносятся в отдельный репозиторий → bitrix24/b24sdk-examples
📈 Статистика
👋 Новые контрибьюторы
— wmnnd made their first contribution in https://github.com/bitrix24/b24phpsdk/pull/118
— sallee113 made their first contribution in https://github.com/bitrix24/b24phpsdk/pull/146
https://github.com/bitrix24/b24phpsdk/releases/tag/1.3.0
➕Добавлено
— поддержка PHP 8.4
— метод Services\Main\Service::guardValidateCurrentAuthToken проверяющий, что идет работа с валидным OAUTH сервером.
— скоуп entity
— сервис Services\Entity\Service\Item
— сервис Services\Entity\Service\Entity
— скоупы humanresources.hcmlink и sign.b2e
— метод Core\Credentials\Scope::contains
— метод Core\Credentials\Scope::getAvailableScopeCodes
— сервис Services\CRM\VatRates\Service\Vat
— сервис Services\CRM\Contact\Service\ContactCompany
— сервис Services\CRM\Requisites\Service\Requisite
— сервис Services\CRM\Requisites\Service\RequisitePreset
— сервис Services\User\Service\Batch
— сервис Services\AI\Engine\Service\Engine
— класс Core\Exceptions\LogicException
DX: консольная команда b24-dev:show-sdk-coverage-statistics
DX: класс Bitrix24\SDK\Deprecations\DeprecatedMethods со списком методов, которые помечены как депрекейтед
DX: все консольные команды исполняются в докер-контейнере php-cli
DX: добавлено кеширование конфига phpstan
DX: добавлена статья «How to Contribute to Bitrix24 PHP SDK»
🪚Изменено
— добавлеен nullable аргумент $scope в методе Bitrix24\SDK\Attributes\Services::getSupportedInSdkApiMethods,
— изменения в методе Application\Contracts\Bitrix24Accounts\Entity::updateApplicationVersion
— ошибки в Bitrix24AccountInterfaceTest, изменены сигнатуры вызовов
🧰 Исправлено
— ошибка в Bitrix24\SDK\Core\Batch для методов: user.get, entity.item.get, entity.item.update
— ошибка в Bitrix24\SDK\Core\ApiClient
— ошибки в ApplicationInstallationRepositoryInterfaceTest
🔐Безопасность
- Добавлен метод Services\Main\Service::guardValidateCurrentAuthToken для проверки авторизационного токена путем вызова метода app.info на OAUTH сервере вендора. Можно использовать для проверки входящих токенов из плейсментов и событий для коробочных инсталляций.
➖Удалено
❗примеры выносятся в отдельный репозиторий → bitrix24/b24sdk-examples
📈 Статистика
Bitrix24 API-methods count: 1146
Supported in bitrix24-php-sdk methods count: 227
Coverage percentage: 19.81% 🚀
Supported in bitrix24-php-sdk methods with batch wrapper count: 29
👋 Новые контрибьюторы
— wmnnd made their first contribution in https://github.com/bitrix24/b24phpsdk/pull/118
— sallee113 made their first contribution in https://github.com/bitrix24/b24phpsdk/pull/146
https://github.com/bitrix24/b24phpsdk/releases/tag/1.3.0
GitHub
task.commentitem.add also requires strict argument order by wmnnd · Pull Request #118 · bitrix24/b24phpsdk
Hey there, I was just running into the same issue as described in #112. I tried the current dev version but it was missing task.commentitem.add in the list of functions that require strict argument...
👍7🔥1
Media is too big
VIEW IN TELEGRAM
BITRIX24-PHP-SDK-EXAMPLES-02
tl;dr;
— используйте переменные окружения
📺 https://www.youtube.com/watch?v=jUBE5VyTkog
tl;dr;
— используйте переменные окружения
📺 https://www.youtube.com/watch?v=jUBE5VyTkog
👍3🔥2
Media is too big
VIEW IN TELEGRAM
BITRIX24-PHP-SDK-EXAMPLES-03
tl;dr;
— научились подключать SDK через composer
📺 https://www.youtube.com/watch?v=iwR2eTvyBJ8
tl;dr;
— научились подключать SDK через composer
📺 https://www.youtube.com/watch?v=iwR2eTvyBJ8
🔥2👍1
Media is too big
VIEW IN TELEGRAM
BITRIX24-PHP-SDK-EXAMPLES-04
tl;dr;
— научились подключать monolog
📺 https://www.youtube.com/watch?v=J3MHlF42fWM
tl;dr;
— научились подключать monolog
📺 https://www.youtube.com/watch?v=J3MHlF42fWM
🔥3
Forwarded from Пых.конф’25 — главное PHP-событие этого года!
Принимаем заявки на доклады!
19 сентября в Москве в Конгресс-центре ЦМТ пройдёт новая PHP-конференция для всех.
👥 400 участников • 🔢 4 зала • 🎙 28 докладов
Скоро откроется сайт конференции, где можно будет приобрести билет по стартовой цене.
А пока — подай доклад! Спикер участвует бесплатно, готовится вместе с программным комитетом и получает ценный опыт публичных выступлений.
Ориентировочный список тем:
• async и неблокирующий I/O;
• статический анализ: Psalm, PHPStan, Rector;
• производительность и highload;
• архитектура: ES, DDD, CQRS, микросервисы;
• тестирование и бенчмаркинг;
• инфраструктура: очереди, стримы, базы данных;
• DevOps: CI/CD, Docker, Kubernetes;
• AI/ML;
• фреймворки: Yii, Symfony, Laravel;
• CMS: WordPress, Drupal, Bitrix;
• IDE и плагины;
• open source: опыт, ошибки, лучшие практики.
Заявку, а лучше несколько, можно подать через Хобота до 1 июля. Мы свяжемся с тобой в течение недели и дадим обратную связь.
До встречи на Пых.конф’25!
19 сентября в Москве в Конгресс-центре ЦМТ пройдёт новая PHP-конференция для всех.
Скоро откроется сайт конференции, где можно будет приобрести билет по стартовой цене.
А пока — подай доклад! Спикер участвует бесплатно, готовится вместе с программным комитетом и получает ценный опыт публичных выступлений.
Ориентировочный список тем:
• async и неблокирующий I/O;
• статический анализ: Psalm, PHPStan, Rector;
• производительность и highload;
• архитектура: ES, DDD, CQRS, микросервисы;
• тестирование и бенчмаркинг;
• инфраструктура: очереди, стримы, базы данных;
• DevOps: CI/CD, Docker, Kubernetes;
• AI/ML;
• фреймворки: Yii, Symfony, Laravel;
• CMS: WordPress, Drupal, Bitrix;
• IDE и плагины;
• open source: опыт, ошибки, лучшие практики.
Заявку, а лучше несколько, можно подать через Хобота до 1 июля. Мы свяжемся с тобой в течение недели и дадим обратную связь.
До встречи на Пых.конф’25!
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Хобот
Бот канала Пых @phpyh.
🔥4👍1
Media is too big
VIEW IN TELEGRAM
BITRIX24-PHP-SDK-EXAMPLES-05
tl;dr;
— Composer License Checker
— PHP Coding Standards Fixer
— PHPStan
— rector
— Composer dependency analyser
📺 https://youtu.be/g3hScZhUrcM
tl;dr;
— Composer License Checker
— PHP Coding Standards Fixer
— PHPStan
— rector
— Composer dependency analyser
📺 https://youtu.be/g3hScZhUrcM
🔥3
Media is too big
VIEW IN TELEGRAM
BITRIX24-PHP-EXAMPLES-08
tl;dr;
— работа с batch-запросами
— CLI приложения на symfony console
— обработка сигналов POSIX
📺 https://youtu.be/Lg-FITVElNc
tl;dr;
— работа с batch-запросами
— CLI приложения на symfony console
— обработка сигналов POSIX
📺 https://youtu.be/Lg-FITVElNc
2👍1
🚀 1.5.0 – 2025.08.01
Added
- service Services\Entity\Section\Service\Section with support methods,
see [crm.entity.section.* methods](https://github.com/bitrix24/b24phpsdk/issues/200):
- service Services\Entity\Item\Property\Service\Property with support methods:
- service Services\Department\Service\Department with support methods,
see [department.* methods](https://github.com/bitrix24/b24phpsdk/issues/204):
- service CRM\Requisites\Service\RequisiteUserfield with support methods,
see [add crm.requisite.userfield.* methods](https://github.com/bitrix24/b24phpsdk/issues/188):
- service CRM\Requisites\Service\RequisiteBankdetail with support methods:
- service CRM\Requisites\Service\RequisiteLink with support methods:
- service CRM\Requisites\Service\RequisitePresetField with support methods:
- service Services\CRM\Status\Service\Status with support methods,
see [crm.status.* methods](https://github.com/bitrix24/b24phpsdk/issues/194):
- service Services\CRM\Status\Service\StatusEntity
- service Services\CRM\Timeline\Service\Comment with support methods,
see [crm.timeline.comment.* methods](https://github.com/bitrix24/b24phpsdk/issues/196):
- Added support for events:
- OnCrmTimelineCommentAdd
- OnCrmTimelineCommentDelete
- OnCrmTimelineCommentUpdate
- service Services\CRM\Timeline\Service\Bindings
- service Services\CRM\Item\Productrow\Service\Productrow with support methods,
see [crm.item.productrow.* methods](https://github.com/bitrix24/b24phpsdk/issues/198)
Fixed
- Fixed typehints in Contact batch for method add, [see details](https://github.com/bitrix24/b24phpsdk/issues/202)
Changed
- Fixed constructor arguments in tests ApplicationInstallations [see details](https://github.com/bitrix24/b24phpsdk/issues/191)
- Bump giggsey/libphonenumber-for-php version to ^8|^9
Statistics
Bitrix24 API-methods count: 1166
Supported in bitrix24-php-sdk methods count: 362
Coverage percentage: 31.05%
https://github.com/bitrix24/b24phpsdk/releases/tag/1.5.0
Added
- service Services\Entity\Section\Service\Section with support methods,
see [crm.entity.section.* methods](https://github.com/bitrix24/b24phpsdk/issues/200):
- service Services\Entity\Item\Property\Service\Property with support methods:
- service Services\Department\Service\Department with support methods,
see [department.* methods](https://github.com/bitrix24/b24phpsdk/issues/204):
- service CRM\Requisites\Service\RequisiteUserfield with support methods,
see [add crm.requisite.userfield.* methods](https://github.com/bitrix24/b24phpsdk/issues/188):
- service CRM\Requisites\Service\RequisiteBankdetail with support methods:
- service CRM\Requisites\Service\RequisiteLink with support methods:
- service CRM\Requisites\Service\RequisitePresetField with support methods:
- service Services\CRM\Status\Service\Status with support methods,
see [crm.status.* methods](https://github.com/bitrix24/b24phpsdk/issues/194):
- service Services\CRM\Status\Service\StatusEntity
- service Services\CRM\Timeline\Service\Comment with support methods,
see [crm.timeline.comment.* methods](https://github.com/bitrix24/b24phpsdk/issues/196):
- Added support for events:
- OnCrmTimelineCommentAdd
- OnCrmTimelineCommentDelete
- OnCrmTimelineCommentUpdate
- service Services\CRM\Timeline\Service\Bindings
- service Services\CRM\Item\Productrow\Service\Productrow with support methods,
see [crm.item.productrow.* methods](https://github.com/bitrix24/b24phpsdk/issues/198)
Fixed
- Fixed typehints in Contact batch for method add, [see details](https://github.com/bitrix24/b24phpsdk/issues/202)
Changed
- Fixed constructor arguments in tests ApplicationInstallations [see details](https://github.com/bitrix24/b24phpsdk/issues/191)
- Bump giggsey/libphonenumber-for-php version to ^8|^9
Statistics
Bitrix24 API-methods count: 1166
Supported in bitrix24-php-sdk methods count: 362
Coverage percentage: 31.05%
https://github.com/bitrix24/b24phpsdk/releases/tag/1.5.0
GitHub
[Feature in SDK]: Add scope entity · Issue #200 · bitrix24/b24phpsdk
Denoscription Add support for Sections entity.section.get entity.section.add entity.section.update entity.section.delete Item Properties entity.item.property.get entity.item.property.add entity.item....
Привет, текущее положение дел по шаблонам приложений
1. Самый нижний слой — SDK
https://github.com/bitrix24/b24phpsdk — плановые релизы раз в месяц по расширению функционала библиотеки.
2. Слой хранения данных — фреймворк-агностик (не зависящий) от фреймворка
https://github.com/mesilov/bitrix24-php-lib/
Тут созданы две сущности отвечающие контрактам из b24phpsdk:
Bitrix24Accounts — храним токены и вот это все связанное с их жизненным циклом
ApplicationInstallations — храним факты установок \ удаления приложения и его жизненного цикла
Т.е. это тот самый минимум, который надо для запуска:
- локального приложения
- тиражного приложения
На этой неделе закончим причесывать до первого релиза 0.x
Т.к. тут уже вариативность существенно больше, то пилим с двумя другими разработчиками, MIT вот это все.
Если прям придерживаться symfony \ laravel way, то там надо делать Symfony‑bundle и Laravel‑adapter, там есть выбор, чтобы это было в одном репе или несколькро репов.
Сейчас, если разработчик на Symfony \ laravel захочет использовать bitrix24-php-lib, то ему придется руками все что надо сконфигурировать у себя (пока нет бандла \ адаптера). Есть такие?
На текущий момент мне гораздо важнее проверить работу всех пользовательских сценариев, поэтому тут пока работы поставил на паузу, делаются только мелки вещи вроде поправить тесты, исправить очевидные косяки и т.д.
3. Шаблоны репозиториев на Symfony \ Laravel
Основная точка приложения усилий, сейчас собираю шаблон симфони, чтобы проверить сценарии которые реализует bitrix24-php-lib и то насколько безболезненно можно все в кучу собрать.
https://github.com/mesilov/bitrix24-application-symfony-template — работы тут
Как только отлажу на симфони сценарии (установка, удаление, очереди и т.д), то можно будет сделать бандл \ и адаптер для Laravel.
Такие вот дела.
1. Самый нижний слой — SDK
https://github.com/bitrix24/b24phpsdk — плановые релизы раз в месяц по расширению функционала библиотеки.
2. Слой хранения данных — фреймворк-агностик (не зависящий) от фреймворка
https://github.com/mesilov/bitrix24-php-lib/
Тут созданы две сущности отвечающие контрактам из b24phpsdk:
Bitrix24Accounts — храним токены и вот это все связанное с их жизненным циклом
ApplicationInstallations — храним факты установок \ удаления приложения и его жизненного цикла
Т.е. это тот самый минимум, который надо для запуска:
- локального приложения
- тиражного приложения
На этой неделе закончим причесывать до первого релиза 0.x
Т.к. тут уже вариативность существенно больше, то пилим с двумя другими разработчиками, MIT вот это все.
Если прям придерживаться symfony \ laravel way, то там надо делать Symfony‑bundle и Laravel‑adapter, там есть выбор, чтобы это было в одном репе или несколькро репов.
Сейчас, если разработчик на Symfony \ laravel захочет использовать bitrix24-php-lib, то ему придется руками все что надо сконфигурировать у себя (пока нет бандла \ адаптера). Есть такие?
На текущий момент мне гораздо важнее проверить работу всех пользовательских сценариев, поэтому тут пока работы поставил на паузу, делаются только мелки вещи вроде поправить тесты, исправить очевидные косяки и т.д.
3. Шаблоны репозиториев на Symfony \ Laravel
Основная точка приложения усилий, сейчас собираю шаблон симфони, чтобы проверить сценарии которые реализует bitrix24-php-lib и то насколько безболезненно можно все в кучу собрать.
https://github.com/mesilov/bitrix24-application-symfony-template — работы тут
Как только отлажу на симфони сценарии (установка, удаление, очереди и т.д), то можно будет сделать бандл \ и адаптер для Laravel.
Такие вот дела.
GitHub
GitHub - bitrix24/b24phpsdk: Bitrix24 PHP SDK for REST API
Bitrix24 PHP SDK for REST API. Contribute to bitrix24/b24phpsdk development by creating an account on GitHub.
🔥4👍2
Что по инфраструктуре?
Приложение работает поверх инфраструктуры, нфраструктурной единицей у нас будет докер-контейнер.
Вопрос в том, что будем выбирать в качестве аппликейшн\веб-сервера. Какие у нас варианты:
Встроенный в PHP dev-сервер
Все запускаем на встроенном в PHP дев-сервере, а production конфигурация это не наша головная боль. Крутитесь как хотите.
У всех пользователей начинает болеть голова, а как это вот все запускать и обслуживать.
nginx + phpfpm
Есть миллион рецептов, проверено годами, собрали @ запустили, для production контура каждый самостоятельно решает ряд вопросов: выпуск сертификатов, логи, телеметрия и т.д.
ru и западное комьюнити в целом понимают, что это такое и как настраивать. На уровне шаблонов приложений даем базовую конфигурацию и дальше сами конфигурируйте как хотите.
Отложенная проблема: развитие nginx начиная с 2022 года стагнирует. Приложения для Битрикс24 не упрутся в «архитектурные» ограничения nginx, но вот экосистема не предоставляет удобных решений «из коробки», настраивайте все сами, как лично вам удобно будет ©.
angie
Это форк nginx от русскоязычной части core-команды nginx, развивается более динамично, русскоязычное комьюнити. Если у вас есть «черный пояс по nginx», то это хорошая замена, которая отвечает на значительную часть требований к современному приложению. Если говорим про западное комьюнити, то выбор angie вызовет некоторые вопросики.
Ну и никуда не девается история с long-running режимом работы php, к которому старательно пытается подойти php-комьюнити.
Более детально с tech-drama можно ознакомиться глянув эти доклады:
https://www.youtube.com/watch?v=Qx9BB7w4mt4 — php и angie
https://www.youtube.com/watch?v=QeI5GMP4ukM&t=15s — деды под пиво бухтят и рассказывают закулисную часть истории
frankenphp
Если вы последний год сидели в пещере и пропустили все новости, то у PHP появился свой application-server.
https://thephp.foundation/blog/2025/05/15/frankenphp/
Из минусов: нужно выучить новый «птичьий язык» конфигурации веб-сервера caddy.
Из плюсов:
— аппликейшн-сервер развивают люди, которые знают с какой стороны PHP запрягать — Kévin Dunglas, creator of API Platform and Symfony Core Team member.
— готовые сценарии для наших любимых фреймворков (Symfony, Laravel,БУС)
— комьюнити адаптирует фреймворки\сценарии и всю обвязку под текущий стек, а под условный nginx вы должны будете портировать конфиги сами.
Поэтому, выбираем в качестве application-server frankenphp 🤔 и на нем отлаживаем «production-ready» конфигурацию приложения, заодно посмотрим, как это выглядит в реальности, а не на бодрых докладах инфлюенсеров с ютьюба, у которых все само работает.
Приложение работает поверх инфраструктуры, нфраструктурной единицей у нас будет докер-контейнер.
Вопрос в том, что будем выбирать в качестве аппликейшн\веб-сервера. Какие у нас варианты:
Встроенный в PHP dev-сервер
Все запускаем на встроенном в PHP дев-сервере, а production конфигурация это не наша головная боль. Крутитесь как хотите.
У всех пользователей начинает болеть голова, а как это вот все запускать и обслуживать.
nginx + phpfpm
Есть миллион рецептов, проверено годами, собрали @ запустили, для production контура каждый самостоятельно решает ряд вопросов: выпуск сертификатов, логи, телеметрия и т.д.
ru и западное комьюнити в целом понимают, что это такое и как настраивать. На уровне шаблонов приложений даем базовую конфигурацию и дальше сами конфигурируйте как хотите.
Отложенная проблема: развитие nginx начиная с 2022 года стагнирует. Приложения для Битрикс24 не упрутся в «архитектурные» ограничения nginx, но вот экосистема не предоставляет удобных решений «из коробки», настраивайте все сами, как лично вам удобно будет ©.
angie
Это форк nginx от русскоязычной части core-команды nginx, развивается более динамично, русскоязычное комьюнити. Если у вас есть «черный пояс по nginx», то это хорошая замена, которая отвечает на значительную часть требований к современному приложению. Если говорим про западное комьюнити, то выбор angie вызовет некоторые вопросики.
Ну и никуда не девается история с long-running режимом работы php, к которому старательно пытается подойти php-комьюнити.
Более детально с tech-drama можно ознакомиться глянув эти доклады:
https://www.youtube.com/watch?v=Qx9BB7w4mt4 — php и angie
https://www.youtube.com/watch?v=QeI5GMP4ukM&t=15s — деды под пиво бухтят и рассказывают закулисную часть истории
frankenphp
Если вы последний год сидели в пещере и пропустили все новости, то у PHP появился свой application-server.
https://thephp.foundation/blog/2025/05/15/frankenphp/
Из минусов: нужно выучить новый «птичьий язык» конфигурации веб-сервера caddy.
Из плюсов:
— аппликейшн-сервер развивают люди, которые знают с какой стороны PHP запрягать — Kévin Dunglas, creator of API Platform and Symfony Core Team member.
— готовые сценарии для наших любимых фреймворков (Symfony, Laravel,
— комьюнити адаптирует фреймворки\сценарии и всю обвязку под текущий стек, а под условный nginx вы должны будете портировать конфиги сами.
Поэтому, выбираем в качестве application-server frankenphp 🤔 и на нем отлаживаем «production-ready» конфигурацию приложения, заодно посмотрим, как это выглядит в реальности, а не на бодрых докладах инфлюенсеров с ютьюба, у которых все само работает.
YouTube
PHP-FPM, (g)unicorn, Puma и uWSGI — будут больше не нужны / Валентин Бартенев
Крупнейшая профессиональная конференция для разработчиков высоконагруженных систем HighLoad++ 2024
2 и 3 декабря 2024.
Москва, Кампус СКОЛКОВО
Презентация и тезисы:
https://highload.ru/moscow/2024/abstracts/13181
Одним из наиболее распространенных способов…
2 и 3 декабря 2024.
Москва, Кампус СКОЛКОВО
Презентация и тезисы:
https://highload.ru/moscow/2024/abstracts/13181
Одним из наиболее распространенных способов…
🤯1
🚀 1.7.0
Added
- Services\Sale\Delivery\Service\Delivery, see sale.delivery.*
- Services\Sale\DeliveryRequest\Service\DeliveryRequest sale.delivery.request.*
- Services\Sale\DeliveryExtraService\Service\DeliveryExtraService with support methods see sale.delivery.extra.service.*
- Services\Sale\DeliveryHandler\Service\DeliveryHandler see sale.delivery.handler.*
- Services\Disk\Service\Disk see disk service methods
- Services\Disk\Storage\Service\Storage see disk.storage.*
- Services\Disk\Folder\Service\Folder see disk.folder.*
- Services\Disk\File\Service\File see disk.file.*
- Services\CRM\Documentgenerator\Numerator see crm.documentgenerator.numerator.*
- Services\Paysystem\Handler\Service\Handler see pay_system.handler.*
- Services\Paysystem\Service\Paysystem see sale.paysystem.*
- Services\Paysystem\Settings\Service\Settings see sale.paysystem.settings.*
- Services\Sale\Shipment\Service\Shipment see sale.shipment.*
- Services\Sale\ShipmentProperty\Service\ShipmentProperty see sale.shipmentproperty.*
- Services\Sale\ShipmentPropertyValue\Service\ShipmentPropertyValue see sale.shipmentpropertyvalue.*
- Services\Sale\ShipmentItem\Service\ShipmentItem see sale.shipmentitem.*
- Services\Sale\Payment\Service\Payment see sale.payment.*
- Services\Sale\CashboxHandler\Service\CashboxHandler see sale.cashbox.handler.*
- Services\Sale\Cashbox\Service\Cashbox see sale.cashbox.*
- Services\Calendar\Service\Calendar see calendar.*
- Added support for events:
-
-
-
- Services\Calendar\Event\Service\Event see calendar.event.*
- Services\Calendar\Resource\Service\Resource see calendar.resource.*
- Services\Sale\PaymentItemBasket\Service\PaymentItemBasket see sale.paymentitembasket.*
- Services\Sale\PaymentItemShipment\Service\PaymentItemShipment see sale.paymentitemshipment.*
- Services\Sale\PropertyRelation\Service\PropertyRelation sale.propertyRelation.*
Fixed
- Fixed Incorrect data loading in Core\Batch::getTraversableList() with desc sorting by ID
Statistics
See details in https://github.com/bitrix24/b24phpsdk/releases
Added
- Services\Sale\Delivery\Service\Delivery, see sale.delivery.*
- Services\Sale\DeliveryRequest\Service\DeliveryRequest sale.delivery.request.*
- Services\Sale\DeliveryExtraService\Service\DeliveryExtraService with support methods see sale.delivery.extra.service.*
- Services\Sale\DeliveryHandler\Service\DeliveryHandler see sale.delivery.handler.*
- Services\Disk\Service\Disk see disk service methods
- Services\Disk\Storage\Service\Storage see disk.storage.*
- Services\Disk\Folder\Service\Folder see disk.folder.*
- Services\Disk\File\Service\File see disk.file.*
- Services\CRM\Documentgenerator\Numerator see crm.documentgenerator.numerator.*
- Services\Paysystem\Handler\Service\Handler see pay_system.handler.*
- Services\Paysystem\Service\Paysystem see sale.paysystem.*
- Services\Paysystem\Settings\Service\Settings see sale.paysystem.settings.*
- Services\Sale\Shipment\Service\Shipment see sale.shipment.*
- Services\Sale\ShipmentProperty\Service\ShipmentProperty see sale.shipmentproperty.*
- Services\Sale\ShipmentPropertyValue\Service\ShipmentPropertyValue see sale.shipmentpropertyvalue.*
- Services\Sale\ShipmentItem\Service\ShipmentItem see sale.shipmentitem.*
- Services\Sale\Payment\Service\Payment see sale.payment.*
- Services\Sale\CashboxHandler\Service\CashboxHandler see sale.cashbox.handler.*
- Services\Sale\Cashbox\Service\Cashbox see sale.cashbox.*
- Services\Calendar\Service\Calendar see calendar.*
- Added support for events:
-
OnCalendarSectionAdd-
OnCalendarSectionUpdate-
OnCalendarSectionDelete- Services\Calendar\Event\Service\Event see calendar.event.*
- Services\Calendar\Resource\Service\Resource see calendar.resource.*
- Services\Sale\PaymentItemBasket\Service\PaymentItemBasket see sale.paymentitembasket.*
- Services\Sale\PaymentItemShipment\Service\PaymentItemShipment see sale.paymentitemshipment.*
- Services\Sale\PropertyRelation\Service\PropertyRelation sale.propertyRelation.*
Fixed
- Fixed Incorrect data loading in Core\Batch::getTraversableList() with desc sorting by ID
Statistics
Bitrix24 API-methods count: 1162
Supported in bitrix24-php-sdk methods count: 632
Coverage percentage: 54.39% 🚀
See details in https://github.com/bitrix24/b24phpsdk/releases
GitHub
Releases · bitrix24/b24phpsdk
Bitrix24 PHP SDK for REST API. Contribute to bitrix24/b24phpsdk development by creating an account on GitHub.
🔥4
🚀 1.8.0
Added
- Added service
- For
- Added support for events
- Added separated methods
events
- Added comprehensive unit tests for
- Updated
- Added comprehensive unit tests for
- Added comprehensive unit tests for
- Added support for dynamic OAuth server selection based on regional endpoints
- Added comprehensive unit tests for
Changed
- Breaking changes in
-
-
- Replaced
- Updated
- Docker configuration updated to PHP 8.4
- Development environment now uses PHP 8.4.14 (docker/php-cli/Dockerfile):
- PHP 8.4 compatibility improvements:
- OAuth server selection made dynamic:
Fixed
- Fixed wrong offset in
- Fixed wrong exception for method
- Fixed added type
- Fixed errors in
- Breaking change: Fixed method signature
object
- Migration: Replace
- Updated all unit and integration tests to use new signature
- Fixed bug in
- Fixed unit tests in
- Fixed unit tests in
Deprecated
- Method
Statistics
https://github.com/bitrix24/b24phpsdk/releases/tag/1.8.0
Added
- Added service
Services\CRM\Type\Service\Type- For
AbstractCrmItem added method getSmartProcessItem to get smart process item- Added support for events
- Added separated methods
RemoteEventsFactory::create and RemoteEventsFactory::validate for create and validate incomingevents
- Added comprehensive unit tests for
RemoteEventsFactory::create and RemoteEventsFactory::validate methods - Updated
ContactPersonInterface implementation- Added comprehensive unit tests for
UTMs - Added comprehensive unit tests for
UserAgentInfo- Added support for dynamic OAuth server selection based on regional endpoints
- Added comprehensive unit tests for
EndpointsChanged
- Breaking changes in
ContactPersonInterface method signatures:-
changeEmail(?string $email) - removed second parameter ?bool $isEmailVerified. Migration path: call markEmailAsVerified() separately after changeEmail() if email needs to be verified-
changeMobilePhone(?PhoneNumber $phoneNumber) - removed second parameter ?bool $isMobilePhoneVerified. Migration path: call markMobilePhoneAsVerified() separately after changeMobilePhone() if phone needs to be verified- Replaced
getUserAgent(), getUserAgentReferer(), getUserAgentIp() methods with single getUserAgentInfo(): UserAgentInfo method that returns complete user agent information object. Migration path: use $info->userAgent, $info->referrer, $info->ip properties instead- Updated
RemoteEventsFactory::validate() method signature from validate(EventInterface $event, string $applicationToken) tovalidate(Bitrix24AccountInterface $bitrix24Account, EventInterface $event).- Docker configuration updated to PHP 8.4
- Development environment now uses PHP 8.4.14 (docker/php-cli/Dockerfile):
- PHP 8.4 compatibility improvements:
- OAuth server selection made dynamic:
Fixed
- Fixed wrong offset in
ItemsResult- Fixed wrong exception for method
crm.item.get, now it ItemNotFoundException- Fixed added type
project in enum PortalLicenseFamily- Fixed errors in
ContactPersonRepositoryInterfaceTest - Breaking change: Fixed method signature
Credentials::createFromOAuth() - third parameter changed from string $domainUrl to Endpoints $endpointsobject
- Migration: Replace
Credentials::createFromOAuth($authToken, $appProfile, 'https://example.com') with Credentials::createFromOAuth($authToken, $appProfile, new Endpoints('https://example.com', 'https://oauth.bitrix.info/'))- Updated all unit and integration tests to use new signature
- Fixed bug in
Endpoints class constructor - Fixed unit tests in
CredentialsTest.php to properly instantiate Endpoints objects- Fixed unit tests in
CoreTest.php integration test to use Endpoints objectDeprecated
- Method
RemoteEventsFactory::createEvent marked as deprecated, use RemoteEventsFactory::create and RemoteEventsFactory::validate insteadStatistics
Bitrix24 API-methods count: 1162
Supported in bitrix24-php-sdk methods count: 639
Coverage percentage: 54.99% 🚀
Supported in bitrix24-php-sdk methods with batch wrapper count: 91
https://github.com/bitrix24/b24phpsdk/releases/tag/1.8.0
GitHub
Release 1.8.0 · bitrix24/b24phpsdk
Added
Added service Services\CRM\Type\Service\Type with support methods,
see crm.type.* methods:
fields method retrieves information about the custom fields of the smart process settings
add meth...
Added service Services\CRM\Type\Service\Type with support methods,
see crm.type.* methods:
fields method retrieves information about the custom fields of the smart process settings
add meth...
🔥1
Привет, вышел новый релиз 0.3.0 bitrix24-php-lib, это библиотека которая отвечает за работу с ключевыми подсистемами вашего тиражного или локального приложения:
— Bitrix24 accounts ✅ храним авторизационные токены
— Installation facts ✅ храним факты установок и удаления приложений
— ApplicationSettings 🆕🚀 настройки уровня приложения, департамента, пользователя, храним в привязке к installation facts
— ContactPersons ⏳ work in progress кто ставил приложение и как с ним связаться для оказания саппорта
— Bitrix24Partners ⏳ work in progress, кто из партнеров поставил приложение, да, те самые Partners Friendly, спасибо Ивану Санникову @zametki_na_polyah за идею
— Application Journal ⏳work in progress, журнал приложения, содержащий бизнесовые события, ваш саппорт скажет вам спасибо.
Как вы понимаете, основная задача — отдать максимум «типового» функционала в стартер приложения
https://github.com/mesilov/bitrix24-php-lib
— Bitrix24 accounts ✅ храним авторизационные токены
— Installation facts ✅ храним факты установок и удаления приложений
— ApplicationSettings 🆕🚀 настройки уровня приложения, департамента, пользователя, храним в привязке к installation facts
— ContactPersons ⏳ work in progress кто ставил приложение и как с ним связаться для оказания саппорта
— Bitrix24Partners ⏳ work in progress, кто из партнеров поставил приложение, да, те самые Partners Friendly, спасибо Ивану Санникову @zametki_na_polyah за идею
— Application Journal ⏳work in progress, журнал приложения, содержащий бизнесовые события, ваш саппорт скажет вам спасибо.
Как вы понимаете, основная задача — отдать максимум «типового» функционала в стартер приложения
https://github.com/mesilov/bitrix24-php-lib
GitHub
GitHub - mesilov/bitrix24-php-lib: Bitrix24 PHP library for build applications
Bitrix24 PHP library for build applications. Contribute to mesilov/bitrix24-php-lib development by creating an account on GitHub.
4🔥7