laravel-自定义facades(门面)
参考资料
laravel学院 | |
---|---|
链接 | |
0.在在app下建立Utils文件夹 |
<?php
namespace App\Utils;
class Test
{
public function sendMessage()
{
return '我是一个测试的facades';
}
}
1.在app下建立Facades文件夹
中建立Test.php
<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Test extends Facade #继承Facade
{
public static function getFacadeAccessor()#重写里面的getFacadeAccessor方法
{
return 'test'; #自定义返回后面需要调用
}
}
2.在命令行中定义服务
# 此命令会在 app\Providers中生成TestServiceProvider.php
php artisan make:provider TestServiceProvider
在TestServiceProvider.php中注册服务
<?php
namespace App\Providers;
use App\Utils\Test;
use Illuminate\Support\ServiceProvider;
class TestServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
//第一个bind方法表示每一次都需要实例化
// $this->app->bind('test',function (){
// return new Test();
// });
#singleton表示注册一次就可以下次可以接着使用
$this->app->singleton('test',function (){
return new Test();
});
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
}
}
3.接着在config\app.php中注册
在providers数组中注册
App\Providers\TestServiceProvider::class,
在aliases中注册
'Test'=>App\Facades\Test::class,
在控制器中使用
# 返回结果我是一个测试的facades 注:这里如果sendMessage不自动提示需要借助ide_helper包生成 php artisan ide-helper:generate(不解释)
return Test::sendMessage();