thinkphp6.0--服务系统
一、服务系统
1. 服务系统,可以将一个类的对象注册到容器中去,方便调用执行;
2. 服务的执行优先级较高,在执行主体程序前就已经完成依赖注入;
3. 它的作用可以做一些初始化,配置一些参数,扩展插件等等均可;
4. 验证码扩展类就使用了服务系统,我们自己创建一个简单的服务;
5. 在common目录下创建一个Shut.php类,这个类是被服务的类;// 他说,服务系统有两个要素,一个是注册,一个是执行
<?php
namespace app\common;
class Shut
{
// 书写一个静态的变量 方便调用
// 这也是一个可更改的变量
public static $name = 'Mr.Zy';
// 书写一个更改静态变量的方法,同时这里也要为静态的
public static function setName($name)
{
self::$name = $name;
}
public function run()
{
halt(self::$name . "温馨提示,系统已关闭...");
}
}
6. 使用命令行,生成一个对Shut.php服务的服务类ShutService.php;
命令行语句:php think make:service ShutService // 他说这句话的意思是,在service文件下生成一个ShutService的服务类
7. 服务类有两个方法,一个是服务注册 register() ,一个是服务启动 boot();
<?php
declare (strict_types = 1);
namespace app\service;
use app\common\Shut;
class ShutService extends \think\Service
{
/**
* 注册服务
*
* @return mixed
*/
public function register()
{
// 绑定一个标识,意思是将被服务的类绑定到容器里
// shut 是标识,Shut::class 是被绑定的被服务类
$this->app->bind('shut',Shut::class);
}
/**
* 执行服务
*
* @return mixed
*/
public function boot()
{
//
Shut::setName('Mrs.ghx');
}
}
8. 最后一步,将系统服务配置到全局定义文件里,service.php; // service.php是自己创建的文件(但是我的好像是自己生成了一个,还是原来就有的,我忘了)注:service.php 文件是之前就有的。
<?php
// 系统服务定义文件
// 服务在完成全局初始化之后执行
return [
\app\service\ShutService::class,
];
9. 最后在任意控制器测试即可,可以容易依赖注入或容器标识执行系统服务; // 他说,这个服务类可以完成一些初始化呀,配置的操作
<?php
namespace app\controller;
use app\BaseController;
use app\common\Shut;
class Index extends BaseController
{
public function test(Shut $shut)
{
// 使用那个服务类有三种方法
// 第一种:就是直接在方法中注入依赖,也就是上面的 test(Shut $Shut),然后下面就可以用了.
$shut->run();
// 第二种:使用助手函数
// 提示,这里的shut指的是我们在注册服务时写的标识,如果标识为abc,那么这里也要为abc
app()->shut->run();
// 第三种:继承基础控制器 BaseController 才能使用
$this->app->shut->run();
}
}
=======================================================================================
++++++++++++++++++++++++++++ 以下为个人笔记分割线,以上为视频内容笔记 +++++++++++++++++++++++++++++++
=======================================================================================
首先,弄一个被服务的类,然后生成一个服务类,然后把被服务类绑定到容器里,最后将系统服务配置到全局定义文件里,就可以用了。
验证码也是这么实现的,我觉得,这东西可以弄一些全局配置,安全检测?好了,不写了。就到这里吧。
这个教学,哔哩哔哩上有,现在有点看不懂,以后再来看就明白了。
再加两句话,服务系统,听名字像是为程序服务的东西。
=======================================================================================
+++++++++++++++++++++++++++++++++++++++广告分割线 ++++++++++++++++++++++++++++++++++++++++
=======================================================================================