Я импортирую сторонний пакет в свой проект с использованием композитора.
composer.json
пакета загружает свои классы с помощью "classmap"
:
{
...
"name"=>"vendor/project",
...
"require": {
"php": ">=5.2.0"
},
"type": "library",
"include-path":["src/"],
"classmap": [
"src/path/to/lib1",
"src/path/to/lib2"
]
...
}
Мой проект composer.json
вытаскивает пакет с использованием "require"
.
{
...
"require": {
"vendor/project": "m.n.*",
}
...
}
Я хотел бы добавить пространство имен, которое может префикс всех классов этого пакета, когда я использую его в своем проекте, могу ли я сделать это в композиторе?
Я знаю, что могу использовать autoload на уровне моего проекта, но, по-видимому, этим классам не требуется загрузка снова и где я могу указать его?
Вы не можете добавить пространство имен в проект без редактирования каждого отдельного файла в проекте и добавления объявления namespace..
наверху. Вероятно, это невозможно.
Если вы пропустите свой собственный код, не должно возникнуть проблемы с конфликтом имени.
Если библиотека сталкивается с еще одной библиотекой сторонних сторон, не принадлежащей к именам, которую вы также не можете использовать для пространства имен, то у вас проблемы. Если это не так, нет реальной причины беспокоиться об этом.
Если определение композитора настроено правильно, все, что вам нужно сделать, это просто использовать класс:
$foo = new \VendorClass;
Автозагрузка композитора позаботится о загрузке класса, отсутствие пространства имен не вызывает беспокойства (см. Выше).