美文网首页
laravel如何自定义门面

laravel如何自定义门面

作者: 豆豆_06fa | 来源:发表于2019-02-15 20:55 被阅读0次

    本文原创自:https://blog.csdn.net/u012460314/article/details/82878778

     在使用php的laravel框架进行项目开发时,我们经常会用到laravel框架自带的门面和服务提供者,下面我们就来探究一下如何编写自己的门面和服务提供者(以下代码基于laravel 5.2*编写)。

    一、创建自定义类

    在app目录下面建立一个Utils\ToolBar.php文件,这是我们的工具类,里面是我们定义的代码。

    <?php

    namespace App\Utils;

    use DB;

    class ToolBar

    {

        public function get()

        {

            $rs=DB::table('news')->get();

            var_dump($rs);

        }

    }

    二、创建服务提供者

    在项目的根目录下执行命令,创建一个服务提供者:

    php artisan make:provider ToolServiceProvider

    接下来我们要在服务提供者中绑定 ToolBar类到服务容器:

    修改 ToolServiceProvider类,将我们刚才编写的工具类注册到容器里面。

    <?php

    namespace App\Providers;

    use Illuminate\Support\ServiceProvider;

    use App\Utils\ToolBar;

    class ToolServiceProvider extends ServiceProvider

    {

        /**

        * Bootstrap the application services.

        *

        * @return void

        */

        public function boot()

        {

            //

        }

        /**

        * Register the application services.

        *

        * @return void

        */

        public function register()

        {

            //     

            $this->app->bind('Tool',function(){

                return new ToolBar();

            });

        }

    }

    三、注册服务提供者

    在config\app.php文件中的providers属性里面注册我们刚添加的服务提供者,即添加:

    App\Providers\ToolServiceProvider::class,

    四、创建门面类

    在app目录下面创建一个门面类,App\Facades\Tool.php,目录这里是我自己建立的,这个可以随便创建。只要在后面注册的时候一致就可以。代码如下:

    <?php

    namespace App\Facades;

    use Illuminate\Support\Facades\Facade;

    class Tool extends Facade

    {

        protected static function getFacadeAccessor()

        {

            return 'Tool';//return Tool  即 $this->app->bind绑定的第一个参数

        }

    }

    五、注册门面类

    在config\app.php的aliases属性中追加下面的代码:(不注册好像也可以)

    'Tool' => App\Facades\Tool::class,

    然后在控制器中运行:

    <?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    use App\Http\Requests;

    use App\Facades\Tool;

    class index extends Controller

    {

        //public

        public function index(){

            Tool::get();

        }

    }

    以上代码均已正确执行!

    注:门面App\Facades\Tool.php中getFacadeAccessor函数getFacadeAccessor返回值return Tool 也就是服务提供者 $this->app->bind绑定的第一个参数

    清缓存:php artisan config:cache

    相关文章

      网友评论

          本文标题:laravel如何自定义门面

          本文链接:https://www.haomeiwen.com/subject/xxmmeqtx.html