专用存储库中的Laravel 4包:找不到ServiceProvider

专用存储库中的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/

我为Laravel 4创建了一个包,在workbench的开发中使用该包时可以正常工作,但当我使用Composer安装它时,它会不断向我返回错误
未找到类“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
是我在问题中提出的第一个代码段。