Я хочу иметь приложение в symfony 3.4, но иметь symfony / dotenv в v4. Пакет dotenv в версии 4.4.8 поддерживает symfony / process 3.4.
Но когда я запускаю composer update
, он терпит неудачу и перечисляет только 3.4. * В качестве возможных версий. Вероятно, это ограничено extra.symfony.require
: 3.4. * В composer.json
.
Я знаю, что это работает, по крайней мере, в некоторых случаях. У меня есть проект в symfony 3.4, который использует symfony/http-client 4.3
. Это работает только потому, что нет более старой версии?
Где я могу найти дополнительную информацию об ограничении зависимостей с помощью symfony/flex
?
Вот некоторые известные мне источники:
- https://symfonycasts.com/screencast/symfony5-upgrade/version-constraints#symfony -flex- symfony -extra-require-is-a-soft-requirements
- https://github.com/symfony/flex/blob/master/README.md
- https://flex.symfony.com/
И вот самый четкий:
Как composer ограничение `extra. symfony .require` применяется? Когда extra.symfony.require
является мягким требованием (текст из 1.), что это значит? Соответствует ли это 4.?
пример composer.json
, который не запускается composer require symfony/dotenv:^4.0
(создан с помощью symfony new --version=3.4
):
{
"type": "project",
"require": {
"php": "^7.0.8",
"ext-ctype": "*",
"ext-iconv": "*",
"symfony/console": "3.4.*",
"symfony/dotenv": "3.4.*",
"symfony/flex": "^1.3.1",
"symfony/framework-bundle": "3.4.*",
"symfony/yaml": "3.4.*"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "3.4.*"
}
}
}