1

我在我的项目中使用 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"

}

4

3 回答 3

6

你应该添加到你 的autoload=>classmap部分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;

(小写)。

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

composer dump-autoload

重建类图

于 2014-10-07T05:38:08.747 回答
1

在文件夹中使用类似的东西创建服务提供者app/services,注意namespace

<?php

namespace Services;

use Illuminate\Support\ServiceProvider;

class ToolboxServiceProvider extends ServiceProvider
{
    //...
}

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

于 2014-10-07T05:31:18.417 回答
-1

ToolboxServiceProvider 使用什么命名空间?您是否在 composer.json 文件中添加了自动加载?你试过一个composer dump-autoload?

于 2014-10-07T05:14:26.450 回答