Автозагрузка двух вендорных проектов с помощью composer одновременно
У меня есть два проекта (project1, project2) с правильно настроенным composer, со своим собственным composer.json
{
"require": {
"wp-cli/wp-cli": "0.15.1"
}
}
Теперь в другом php-файле я загружаю их через
require_once 'project1/vendor/autoload.php';
require_once 'project2/vendor/autoload.php';
И я получаю ошибку
Fatal error: Cannot redeclare cli\render() (previously declared in
/private/tmp/php/project1/vendor/wp-cli/php-cli-tools/lib/cli/cli.php:26)
in /private/tmp/php/project2/vendor/wp-cli/php-cli-tools/lib/cli/cli.php
on line 28
Это проблема wp-cli или проблема с композитором? Я пытался с другой библиотекой, такой как монолог, который в порядке.
Любая идея?
1 ответ
Не следует использовать автозагрузчик Composer дважды.
Существует простое решение: в третьем проекте создайте новый composer.json
и включить два других проекта там.
Затем включите только автозагрузку этого третьего проекта. Там не будет дубликатов классов. Это должно работать, если вы настроили правильную автозагрузку не только для библиотек, которые вы используете в любом из двух проектов, но и для всех классов в этих проектах.