我想使用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"
}
}
}
]
}
我的比特桶存储库中没有一个composer.json,我想通过composer添加它。现在,当我运行我的应用程序时,我得到以下错误:
Fatal error: Class 'SimpleUserUserServiceProvider' not found in app/bootstrap.php on line 82
我如何确保这也在自动加载器中?
当您指定包存储库时,您基本上提供了该包的composer.json中的所有详细信息(如果有)。为了使自动加载工作,必须为包指定autoload
属性。composer手册提供了有关autoload
属性的详细信息。
如果您的位桶存储库符合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" ]
}
}
}
]
}