我正试图在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前面添加一个'',就可以指定它在主命名空间而不是当前命名空间中。