Laravel-4中的外观和服务提供商问题


Issue with Facade and Service Provider in Laravel-4

我正试图在laravel-4中为自定义构建的类设置一个Facade。然而,当我试图加载我的网站时,我得到了一个错误,读取

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的Facade,保存在同一个文件夹中,它看起来像这样:

<?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');
        });
    }
}

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

'PlaneSaleing'ResizerServiceProvider',

任何帮助,非常感谢

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

您得到的第二个错误(找不到类"PlaneSaleing''AliasLoader")是因为类ResizerServiceProvider在PlaneSaleing命名空间中,而该类试图调用不在同一命名空间中的AliasLoader。

您只需要在AliasLoader前面添加一个'',就可以指定它在主命名空间而不是当前命名空间中。