问题描述
我想使用作曲家将一个bitbucket存储库添加到我的供应商文件夹。这是我在composer.json中的内容:
{
require:{
*,
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 /}
},
存储库:[
{
type:package,
package:{
name:jasongrimes,
versi on:dev-master,
source:{
url:mybitbucketurl,
type:git,
reference: origin / master
}
}
}
]
}
我在我的bitbucket存储库中没有composer.json,我想通过composer添加它。现在,当我运行我的应用程序时,出现以下错误:
致命错误:应用程序中未找到Class'SimpleUser\UserServiceProvider' /bootstrap.php第82行
我如何确定这也是在自动加载器中? autoload 属性。作曲家手册的详细信息 。
$ b 如果你的bitbucket存储库符合PSR-0或PSR-4,你只需要指定正确的标准以及要加载的类的存储位置库。例如,PSR-4和你的类存储在 src /
目录中:
require:{
jasongrimes:dev-master
},
存储库:[
{
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
$ bautoload:{
classmap:[SimpleUser / UserServiceProvider.php]
}
}
}
]
}
I want to add a bitbucket repository to my vendor folder using composer. This is what I have in my 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"
}
}
}
]
}
I don't have a composer.json in my bitbucket repository that I want to add through composer. Now when I run my application I get the following error:
Fatal error: Class 'SimpleUser\UserServiceProvider' not found in app/bootstrap.php on line 82
How can I make sure this is also in the autoloader?
When you specify a package repository, you are basically providing all of the details that would be in that package's composer.json if it had one. For autoloading to work, an autoload
property for the package must be specified. The composer manual has details on the autoload
property.
If your bitbucket repository conforms to PSR-0 or PSR-4, you simply need to specify the correct standard, and where the classes to be loaded are stored in the repository. For example, with PSR-4 and your classes stored in the src/
directory:
{
"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/" }
}
}
}
]
}
Otherwise, you can use classmap
to specify directories or files to be scanned for .php
or .inc
files with classes. For example, if the class you are attempting to load is located in the file SimpleUser/UserServiceProvider.php
in your repository:
{
"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" ]
}
}
}
]
}
这篇关于自动加载bitbucket仓库+ composer.json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!