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();

                
            
        
浙公网安备 33010602011771号