我正在尝试在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');
});
}
}
最后,我已将以下行添加到'providers' => array (...)
文件
laravel/config/app.php
'PlaneSaleing\ResizerServiceProvider',
任何帮助,非常感谢
答案 0 :(得分:4)
您必须将app / library添加到composer autoload路径,然后使用artisan dump-auto重新生成自动加载器。
您收到的第二个错误(Class&#39; PlaneSaleing \ AliasLoader&#39;未找到)是因为ResizerServiceProvider类位于PlaneSaleing命名空间中,并且此类尝试调用不同的AliasLoader命名空间。
您只需在AliasLoader前面添加一个\来指定它在主命名空间而不是当前命名空间中。