【发布时间】:2013-10-05 11:06:49
【问题描述】:
我为 Laravel 4 创建了一个包,该包在 workbench 中用于开发时可以正常工作,但是当我使用 Composer 安装它时,它一直返回错误 Class 'Myvendor\Mypackage\MypackageServiceProvider' not found。
我的包有一个特殊性,那就是我的类源的名称与我的包的名称不同。通常它们是相同的。
vendor/
Houle/
laravel-dynamite/
src/
Fhoule/
Dynamite/
DynamiteServiceProvider.php
我知道它可以工作,因为 Laravel 也是这样工作的。
vendor/
laravel/
framework/
src/
Illuminate/
我的包 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 创建包。
- 使其在工作台目录中正常工作
- 推送到私有 Bitbucket 存储库
- 安装了新的 Laravel 实例
-
更改了 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" } } }], ... -
将我的包Service Provider添加到app/config/app.php:
'providers' => array( 'Fhoule\Dynamite\DynamiteServiceProvider', )
这就是我的应用程序返回错误 Class 'Fhoule\Dynamite\DynamiteServiceProvider' not found 的地方。
我的问题可能是什么?
【问题讨论】:
-
你跑
php artisan dump-autoload了吗? -
执行
composer install或update后就不需要了,但是我试过了。 -
好的,但实际上,如果您使用的是工作台,则有必要运行 artisan 的 dump-autoload,因为它比 composer dump-autoload 做得更多。
标签: laravel laravel-4 composer-php