FR6*_*FR6 1 laravel composer-php laravel-4
我为Laravel 4创建了一个在工作台中进行开发时正常工作的软件包,但是当我使用Composer安装它时,它会一直向我返回错误Class 'Myvendor\Mypackage\MypackageServiceProvider' not found.
我的包有一个特殊之处,就是我的类源的名称与我的包的名称不同.通常它们是相同的.
vendor/
Houle/
laravel-dynamite/
src/
Fhoule/
Dynamite/
DynamiteServiceProvider.php
Run Code Online (Sandbox Code Playgroud)
我知道它可以工作,因为Laravel的工作方式也是如此.
vendor/
laravel/
framework/
src/
Illuminate/
Run Code Online (Sandbox Code Playgroud)
我的包composer.json的属性PSR-0似乎已正确配置:
"name": "Houle/laravel-dynamite",
...
"require": {
"php": ">=5.3.0",
"illuminate/support": "4.0.x"
},
"autoload": {
"classmap": [
"src/migrations",
"src/controllers",
"src/models"
],
"psr-0": {
"Fhoule\\Dynamite": "src/"
}
},
...
Run Code Online (Sandbox Code Playgroud)
我如何创建我的包:
更改了composer.json配置以安装我的包(来自私有存储库)
"name": "laravel/laravel",
...
"require": {
"laravel/framework": "4.0.*",
"Houle/laravel-dynamite": "2.0.1"
},
"repositories": [{
"type": "package",
"package": {
"name": "Houle/laravel-dynamite",
"version": "2.0.1",
"source": {
"url": "git@bitbucket.org:Houle/laravel-dynamite.git",
"type": "git",
"reference": "v2.0.1"
}
}
}],
...
Run Code Online (Sandbox Code Playgroud)将我的包服务提供程序添加到app/config/app.php:
'providers' => array(
'Fhoule\Dynamite\DynamiteServiceProvider',
)
Run Code Online (Sandbox Code Playgroud)那是我的应用程序返回错误的地方Class 'Fhoule\Dynamite\DynamiteServiceProvider' not found.
可能是我的问题?
我发现了我的问题,它与我命名供应商,包和类的方式没有任何关系.
就是在我的composer.json(项目的根目录)中,我将我的存储库类型设置为,package但是像Composer文档所述,类型包是针对不支持Composer的包.这就是Composer没有更新我的autoload_classmap.php文件的原因.
因此,如果要使用私有存储库(如Bitbucket或GitHub),则需要将存储库的类型设置为git:
{
"name": "laravel/laravel",
...
"require": {
"laravel/framework": "4.0.*",
"houle/laravel-dynamite": "dev-master"
},
"repositories": [{
"type": "git",
"url": "git@bitbucket.org:Houle/laravel-dynamite.git"
}],
...
}
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助某人.