tp6服务类的创建及使用
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:服务的好处在于容易在不修改代码的情况下,往系统里增加和修改功能,提供可扩展性