2015-07-31 2 views
0

Я открыл вопрос почти год назад о пакете композитора я люблю: Jobby (это позволяет управлять задачами Cron в PHP): see issueкомпозитора пакет: как требовать поставщика Lib автозагрузки

Моей проблемой с этим пакет, что Лив композитор поставщик жестко закодирован в файл с именем BackgroundJob.php (see file)

if (file_exists('vendor/autoload.php')) { 
    require('vendor/autoload.php'); 
} else { 
    require(dirname(dirname(dirname(dirname(dirname(__DIR__))))) . '/vendor/autoload.php'); 
} 

но мой каталог поставщика не является «поставщиком», но «PHP/Lib», и это не ДОГОВОРНОЕ;)

Мое уродливое решение - это путь жесткого кода к файл автозагрузки, но затем мне нужно вручную редактировать BackgroundJob.php каждый раз, когда я устанавливаю lib.

Как производитель lib может быть любой глубиной, я действительно блуждаю, что является ХОРОШИМ решением этой проблемы: очевидно, Jobby - это не единственный пакет, который требует запуска других библиотек из композитора. Не могли бы вы указать мне на библиотеку, которая обрабатывает это, чтобы я мог взглянуть на нее или дать вам свои мысли?

Благодаря

ответ

0

Я думаю, что нет чистой, ни хорошим решением, чтобы установить пакет, который вы не владеете себя в другой каталог, чем vendor, потому что это очень плохая идея. И это по дизайну композитора! Это одно, что делает композитора потрясающим. Существует nice article о том, почему это плохая идея устанавливать пакеты в каталог, отличный от vendor.

Если у вас есть веские причины, которые не просто «но я хочу ...», и вам действительно нужно это делать (я бы рекомендовал не делать этого!), Но тогда вы можете сделать некоторые трюки с помощью composer scripts. Должно быть возможно запустить сценарий post-package-update или post-package-install, чтобы переместить пакет от поставщика в нужный каталог.

Но имейте в виду, что каждый разработчик будет ненавидеть вас за это. Есть причины, по которым vendor является единственным и единственным каталогом для сторонних пакетов. Это не ограничение просто для удовольствия.

+0

Я понимаю ваше объяснение, но когда я начал работать с композитором, я увидел, что опция «vendor-dir» доступна. Если для некоторых библиотек является обязательным использование этого каталога, его следует удалить или по крайней мере, но на нем будет очень большой предупреждающий флаг! ? – hugsbrugs

+0

Но параметр 'vendor-dir' не предназначен для установки пользователями в другой каталог, чем' vendor'. Могу ли я спросить вас, почему ваш проект использует 'php/lib' вместо' vendor', даже если вы сказали, что он не подлежит обсуждению? Может быть, это легче изменить, чем прикрутить все преимущества композитора. –

0

Здесь плохое решение, но сделать трюк:

вил, что проект => кода изменений => сделать свой пользовательский пакет

позже, вы можете просто установить свой собственный пользовательский пакет.

+0

Год, когда я подумал об этом, а потом сказал себе: постарайся сделать это хорошим путем :) – hugsbrugs

Смежные вопросы