laravel-自定义facades(门面)

参考资料

laravel学院
链接

0.在在app下建立Utils文件夹

<?php

namespace AppUtils;

class Test
{
    public function sendMessage()
    {
        return '我是一个测试的facades';
    }
}

1.在app下建立Facades文件夹
中建立Test.php

<?php

namespace AppFacades;

use IlluminateSupportFacadesFacade;

class Test extends Facade #继承Facade
{
    public static function getFacadeAccessor()#重写里面的getFacadeAccessor方法
    {
        return 'test';  #自定义返回后面需要调用
    }
}

2.在命令行中定义服务

# 此命令会在 appProviders中生成TestServiceProvider.php
php artisan make:provider TestServiceProvider

在TestServiceProvider.php中注册服务

<?php

namespace AppProviders;


use AppUtilsTest;
use IlluminateSupportServiceProvider;

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.接着在configapp.php中注册

providers数组中注册

AppProvidersTestServiceProvider::class,

aliases中注册

'Test'=>AppFacadesTest::class,

在控制器中使用

# 返回结果我是一个测试的facades 注:这里如果sendMessage不自动提示需要借助ide_helper包生成 php artisan ide-helper:generate(不解释)
return Test::sendMessage();
原文地址:https://www.cnblogs.com/yaoliuyang/p/14231519.html