专用存储库中的Laravel 4包:找不到ServiceProvider
我为Laravel 4创建了一个包,在workbench的开发中使用该包时可以正常工作,但当我使用Composer安装它时,它会不断向我返回错误专用存储库中的Laravel 4包:找不到ServiceProvider,laravel,laravel-4,composer-php,Laravel,Laravel 4,Composer Php,我为Laravel 4创建了一个包,在workbench的开发中使用该包时可以正常工作,但当我使用Composer安装它时,它会不断向我返回错误未找到类“Myvendor\MyPackages\MypackageServiceProvider” 我的包有一个特殊性,即类源的名称与包的名称不同。通常它们是一样的 vendor/ Houle/ laravel-dynamite/ src/ Fhoule/
未找到类“Myvendor\MyPackages\MypackageServiceProvider”
我的包有一个特殊性,即类源的名称与包的名称不同。通常它们是一样的
vendor/
Houle/
laravel-dynamite/
src/
Fhoule/
Dynamite/
DynamiteServiceProvider.php
我知道这是可行的,因为拉威尔也是这样工作的
vendor/
laravel/
framework/
src/
Illuminate/
我的package 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/"
}
},
...
我如何创建我的包:
- 使用Artisan创建包
- 使其在工作台目录中正常工作
- 推式私人比特桶回购
- 已安装Laravel的新实例
- 更改composer.json配置以安装我的软件包(从专用存储库)
- 已将my package服务提供程序添加到app/config/app.php:
'providers' => array( 'Fhoule\Dynamite\DynamiteServiceProvider', )
未找到类“Fhoule\Dynamite\DynamiteServiceProvider”
我的问题是什么?您的包(在BitBucket中找到的包)中的
composer.json
需要指定PSR-0
自动加载组件,而不是顶级Laravel项目中的composer.json
文件
您可以在私有存储库中为您的repo显示composer.json文件吗?您的包(在BitBucket中找到的包)中的
composer.json
需要指定PSR-0
自动加载组件,而不是顶级Laravel项目中的composer.json
文件
您能在私有存储库中为您的repo显示composer.json文件吗?我发现了我的问题,它与我命名供应商、包和类的方式无关 就是在我的
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"
}],
...
}
希望它能帮助别人。我发现了我的问题,这与我命名供应商、包和类的方式无关 就是在我的
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"
}],
...
}
希望它对其他人有所帮助。您是否运行了
php artisan dump autoload
?在执行composer install
或update
后,不需要这样做,但我确实尝试过。好的,但实际上,如果您使用的是workbench,则有必要运行artisan的dump autoload,因为它比composer dump-autoload做得更多。您是否运行了php artisan dump autoload
?在执行composer install
或update
后,这不是必需的,但我确实尝试过。好的,但实际上,如果您使用的是workbench,则必须运行artisan的dump-autoload,因为它比composer dump-autoload做得更多。我的包的内容composer.json
是我在问题中提出的第一个代码段。我的包的内容composer.json
是我在问题中提出的第一个代码段。