Композитор - Автозагрузка API / Custom Installer
-
21-12-2019 - |
Вопрос
Как auto auto загрузовать набор функций библиотеки API с установленной библиотекой композитора?
У меня есть библиотека с функцией API, используемая для интерфейса внутренних объектов библиотек, и хотеть композитору автоматически загрузить API и сделать его доступным после установки, не требуя конца-разработчика, чтобы включить файл.
В настоящее время библиотека загружается только путем включения __init__.php
, и он включает в себя функции API и автозагрузчик, если требуется.
Спасибо!
Решение
Composer всегда потребует концевого разработчика для включения одного файла, который является vendor/autoload.php
. Вы не можете облегчить то, что.
Но то, что вы можете сделать, это сделать, включая __init__.php
необязательно, потому что интеграция композитора позволяет вместо этого использовать этот автозагрузчик. Это также будет работать на функции, которые не могут быть на самом деле автозагрузки - Composer предлагает всегда включать файл, если его рассказывают.
Так что в конце конфигурации вашего композитора этой библиотеки API будет выглядеть так:
{
"name": "yourvendorname/yourfancylibraryname",
"license": "any open source identifier",
"autoload": {
"psr-0": {
"Foo_Api": "src/files"
},
"classmap": [
"extra/folders_with_any_other_class_not_conforming_to_psr0_or_psr4"
],
"files": [
"functions/file_with_your_function_definitions.php"
]
}
}
.
Я не знаю о том, соответствует ли ваши классы PSR-0 или даже PSR-4, но если они сделают, вы и все выиграют, если вы можете объявить AutoLoader с этими стандартами. Если нет: ClassMap поможет вам.
Ваше определение функции будет загружено файлом или файлами, упомянутыми в «файлах».
Вам больше не нужен автозагрузчик для композитора.
Конечно, вы также можете просто упомянуть старый генеракодицетагCode в качестве файла, который будет включен в «файлы», но это отделит вашу библиотеку со всех других классов, вероятно, будет меньше исполнения (композитор уже имеет очень хороший автозагрузчик - Нет необходимости иметь два из них) и определенно исключит все ваши классы от сбрасывания в еще более быстрый автозагрузчик Composer Classer.