Автозагрузка репозитория bitbucket + composer.json
Я хочу добавить репозиторий bitbucket в папку моего поставщика с помощью composer. Это то, что у меня есть в моем composer.json:
{
"require": {
"silex/silex": "~1.1",
"doctrine/dbal": "2.2.*",
"twig/twig" : "1.*",
"symfony/twig-bridge": "~2.3",
"twitter/bootstrap": "*",
"symfony/assetic-bundle": "2.1.*",
"leafo/lessphp": "*",
"silex/web-profiler": "~1.0",
"symfony/security": "~2.3",
"symfony/form": "~2.3",
"symfony/validator": "~2.3",
"symfony/config": "~2.3",
"symfony/translation": "~2.3",
"monolog/monolog": ">=1.0.0",
"symfony/yaml": "~2.3",
"jasongrimes": "dev-master"
},
"autoload": {
"psr-0": { "": "src/" }
},
"repositories": [
{
"type": "package",
"package": {
"name": "jasongrimes",
"version": "dev-master",
"source": {
"url": "mybitbucketurl",
"type": "git",
"reference": "origin/master"
}
}
}
]
}
В моем репозитории bitbucket нет composer.json, который я хочу добавить через composer. Теперь, когда я запускаю свое приложение, я получаю следующую ошибку:
Fatal error: Class 'SimpleUser\UserServiceProvider' not found in app/bootstrap.php on line 82
Как я могу убедиться, что это тоже в автозагрузчике?
1 ответ
Когда вы указываете репозиторий пакетов, вы в основном предоставляете все детали, которые были бы в этом пакете composer.json, если бы он был. Для автозагрузки на работу, autoload
свойство для пакета должно быть указано. Руководство композитора содержит подробную информацию о autoload
собственность
Если ваш репозиторий bitbucket соответствует PSR-0 или PSR-4, вам просто нужно указать правильный стандарт и место, где должны быть загружены классы, которые хранятся в репозитории. Например, с PSR-4 и вашими классами, хранящимися в src/
каталог:
{
"require": {
"jasongrimes": "dev-master"
},
"repositories": [
{
"type": "package",
"package": {
"name": "jasongrimes",
"version": "dev-master",
"source": {
"url": "mybitbucketurl",
"type": "git",
"reference": "origin/master"
},
"autoload": {
"psr-4": { "": "src/" }
}
}
}
]
}
В противном случае вы можете использовать classmap
указать каталоги или файлы для сканирования .php
или же .inc
файлы с классами. Например, если класс, который вы пытаетесь загрузить, находится в файле SimpleUser/UserServiceProvider.php
в вашем хранилище:
{
"require": {
"jasongrimes": "dev-master"
},
"repositories": [
{
"type": "package",
"package": {
"name": "jasongrimes",
"version": "dev-master",
"source": {
"url": "mybitbucketurl",
"type": "git",
"reference": "origin/master"
},
"autoload": {
"classmap": [ "SimpleUser/UserServiceProvider.php" ]
}
}
}
]
}