tp6服务类的创建及使用

Author Avatar
yyq 2021-07-17 11:53:38
  • 二维码

tp6服务类的创建及使用

        tp6提供了服务的使用方法,实际操作了下,做个记录:


        NO1:使用命令生成服务类,命令为 php think make:service MyService,执行后会在项目根目录自动生成service/MyService.php


        NO2:MyService.php自动继承了\think\Service类,里面只有两个方法,一个是注册服务 register(),一个是执行服务boot();


        NO3:最后需要将服务器写入系统服务定义文件app\service.php数组内,写法如下:

                '\app\service\MyService',


        NO4:在注册服务register()方法内可以绑定相应的类,以下介绍几种记录下:

                a:绑定自定义类:

                    1:自定义类MyServiceDemo.php,内容如下:

                        <?php

                        namespace app\common;

                        class MyServiceDemo

                        {

                                public function showVar()

                                { 

                                    echo 'yyq test service!';

                                }

                        }


                    2:在register()内绑定,语句为:$this->app->bind('my_service', MyServiceDemo::class); 记得引入类use app\common\MyServiceDemo;


                    3:在控制器内调用:

                        $uapp = app('my_service');

                        $uapp->showVar(); //输出'yyq test service!'


                b:绑定模型类
                    1:存在用户模型User的情况下在register()内绑定,语句为:$this->app->bind('my_user', User::class); 记得引入模型类use app\model\User;


                    2:控制器内调用:              

                         $user_obj = app('my_user');

                     $user_info = $user_obj->select()->toArray();

                     echo json_encode($user_info); //输出用户表信息


                c:绑定系统缓存Cache类

                    1:在register()内绑定,语句为:$this->app->bind('my_cache', \think\Cache::class);


                    2:控制器内调用:

                        $ucache = app('my_cache');

                        $ucache->set('uname', 'yyqtest', 300);

                        $uname = $ucache->get('uname');

                        echo $uname;           //输出yyqtest 

                        

        NO5:服务的好处在于容易在不修改代码的情况下,往系统里增加和修改功能,提供可扩展性

上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语