Представьте, что вы пишете библиотеку под PHP, которая будет правильно работать только в 64-разрядных системах. Например, vjik/telegram-bot-api использует тип
int для идентификатора чата, а chat.id, согласно документации, может иметь до 52 значимых бит.Как предотвратить установку такого пакета на 32-разрядной системе? Через Composer! В
composer.json можно указать соответствующий суффикс для php:
{
"require": {
"php-64bit": "^8.4"
}
}
Другие поддерживаемые подтипы
php:•
php-ipv6 — сборка PHP с поддержкой IPv6 (без флага --disable-ipv6),•
php-zts — потокобезопасная сборка PHP (с флагом --enable-zts),•
php-debug — сборка PHP в режиме отладки (с флагом --enable-debug).Чтобы скомбинировать несколько таких требований, не дублируя при этом констрейнт, можно поступить как с Core-расширениями:
{
"require": {
"php-64bit": "^8.4",
"php-ipv6": "*"
}
}
Вообще, всё это есть в документации Composer, но я случайно узнал на днях, изучая пакет danog/telegram-entities.
P.S.: Закинул PR Сергею.