Laravel无法找到自定义服务提供商

时间:2014-10-07 05:07:38

标签: laravel laravel-4 composer-php service-provider

我正在使用Laravel进行项目,我创建了一个服务提供商,它位于app/services/ToolboxServiceProvider.php,我添加了

'providers' => array(
    ....
    'services\ToolboxServiceProvider',
);

在我的app.php配置文件中。现在加载应用程序时,它说服务提供商找不到,我知道我在提供者数组中的路径设置有问题,问题是:如何使其正确?提前谢谢。

{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
    "laravel/framework": "4.2.*"
},
"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ]
},
"scripts": {
    "post-install-cmd": [
        "php artisan clear-compiled",
        "php artisan optimize"
    ],
    "post-update-cmd": [
        "php artisan clear-compiled",
        "php artisan optimize"
    ],
    "post-create-project-cmd": [
        "php artisan key:generate"
    ]
},
"config": {
    "preferred-install": "dist"
},
"minimum-stability": "stable"

}

3 个答案:

答案 0 :(得分:4)

您应该加入autoload => classmap的{​​{1}}部分:

composer.json

所以看起来应该是这样的:

"app/services",

在您的提供者文件中,您应该在开头:

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",
        "app/services",
    ]
},

(小写)。

在完成这些更改后,您应该运行:

<?php namespace services;

重建classmap

答案 1 :(得分:1)

app/services文件夹中使用类似的内容创建服务提供商,请注意namespace

<?php

namespace Services;

use Illuminate\Support\ServiceProvider;

class ToolboxServiceProvider extends ServiceProvider
{
    //...
}

然后在providers数组中添加'Services\ToolboxServiceProvider'。然后在"app/services"文件的classmap部分添加composer.json并转储自动加载器。

答案 2 :(得分:-1)

ToolboxServiceProvider使用什么命名空间?你有没有在composer.json文件中添加自动加载?你试过composer dump-autoload?

吗?