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();

    }
}

 

=======================================================================================

++++++++++++++++++++++++++++ 以下为个人笔记分割线,以上为视频内容笔记 +++++++++++++++++++++++++++++++

=======================================================================================

首先,弄一个被服务的类,然后生成一个服务类,然后把被服务类绑定到容器里,最后将系统服务配置到全局定义文件里,就可以用了。

验证码也是这么实现的,我觉得,这东西可以弄一些全局配置,安全检测?好了,不写了。就到这里吧。

这个教学,哔哩哔哩上有,现在有点看不懂,以后再来看就明白了。

再加两句话,服务系统,听名字像是为程序服务的东西。

 

 

=======================================================================================

+++++++++++++++++++++++++++++++++++++++广告分割线 ++++++++++++++++++++++++++++++++++++++++

=======================================================================================

posted @ 2022-03-31 23:46  励志成为IT大佬的菜鸟  阅读(480)  评论(0)    收藏  举报