4

我正在尝试为 laravel-4 中的自定义构建类设置外观。但是,当我尝试加载我的网站时,我收到一条错误消息

Class 'PlaneSaleing\ResizerServiceProvider' not found

我已经按照这里的教程:http: //fideloper.com/create-facade-laravel-4

我的自定义类被调用Resizer.php并保存在laravel\app\library\其中,如下所示:

<?php

namespace PlaneSaleing;

class Resizer {
    // My custom methods
}

然后我创建了一个名为 的外观ResizerFacade.php,保存在同一个文件夹中,它看起来像这样:

<?php

namespace PlaneSaleing\Facades;

use Illuminate\Support\Facades\Facade;

class Resizer extends Facade {

    protected static function getFacadeAccessor() { return 'resizer'; }

}

第三,我创建了一个ResizerServiceProvider.php文件并将其保存在同一个文件夹中,如下所示:

<?php

namespace PlaneSaleing;

use Illuminate\Support\ServiceProvider;

class ResizerServiceProvider extends ServiceProvider {

    public function register()
    {
        // Register 'resizer' instance container to our UnderlyingClass object
        $this->app['resizer'] = $this->app->share(function($app)
        {
            return new Resizer;
        });

        // Shortcut so developers don't need to add an Alias in app/config/app.php
        $this->app->booting(function()
        {
            $loader = AliasLoader::getInstance();
            $loader->alias('Resizer', 'PlaneSaleing\Facades\Resizer');
        });
    }
}

最后,我在'providers' => array (...)inlaravel/config/app.php文件中添加了以下行

'PlaneSaleing\ResizerServiceProvider',

任何帮助,非常感谢

4

1 回答 1

4

您必须将应用程序/库添加到您的 composer 自动加载路径,然后使用 artisan dump-auto 重新生成自动加载器。

您遇到的第二个错误(找不到类“PlaneSaleing\AliasLoader”)是因为 ResizerServiceProvider 类位于 PlaneSaleing 命名空间中,并且此类尝试调用不在同一命名空间中的 AliasLoader。

您只需在 AliasLoader 前面添加一个 \ 以指定它位于主命名空间而不是当前命名空间中。

于 2013-08-23T08:37:35.057 回答