官方定义:系统服务的概念是指在执行框架的某些组件或者功能的时候需要依赖的一些基础服务,服务类通常可以继承系统的think\Service类,但并不强制(如果继承think\Service的话可以直接调用this->app获取应用实例)。
开始案例
1、使用命令生成一个服务类
php think make:service TestService
默认生成的服务类会继承系统的think\Service,并且自动生成了系统服务类最常用的两个空方法:register和boot方法。
-
register方法(注册服务)通常用于注册系统服务,也就是将服务绑定到容器中
-
boot 方法(执行服务)是在所有的系统服务注册完成之后调用的,用于定义启动某个系统服务之前需要做的操作
2、编辑TestService
// 对默认生成的TestService编辑为如下代码
<?php
declare (strict_types = 1);
namespace app\service;
class TestService extends \think\Service
{
/**
* 注册服务
* 通常用于注册系统服务,也就是将服务绑定到容器中
* @return mixed
*/
public function register()
{
$this->app()->bind('my_session', \think\Session::class); // 绑定一个Session类到my_session
}
/**
* 执行服务
* 是在所有的系统服务注册完成之后调用的,用于定义启动某个系统服务之前需要做的操作
* @return mixed
*/
public function boot()
{
echo '在执行完所有的系统服务注册完成之后会调用我,输出本行语句';
}
}
3、注册服务到你的应用实例中
可以在应用的全局公共文件service.php中定义需要注册的系统服务,系统会自动完成注册以及启动。例如:
4、控制器使用
<?php
namespace app\index\controller;
class Test
{
public function myservice(){
$session = app('my_session');
$session->set('name','zhangsan');
$name = $session->get('name');
dump($name);
}
}
5、浏览器输出结果