本文介绍了自动加载bitbucket仓库+ composer.json的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用作曲家将一个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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-16 09:19
查看更多