시스템 서비스



서비스 정의

가장 쉬운 방법은 명령줄을 사용하여 서비스를 생성하는 것입니다.

php think make:service  FileSystemService

서비스는 등록 및 부팅 방법이라는 두 가지 빈 방법을 자동으로 생성합니다.

등록 방법

등록 방법은 일반적으로 Laravel의 서비스 제공자와 유사하게 시스템 서비스를 등록하는 데 사용됩니다. 예:

<?php
namespace app\service;

use my\util\FileSystem;

class FileSystemService extends Service
{
    public function register()
    {
        $this->app->bind('file_system', FileSystem::class);
    }
}

등록 방법에는 매개변수가 필요하지 않습니다.

<?php
namespace app\service;

use my\util\FileSystem;

class FileSystemService extends Service
{
    public $bind = [
        'file_system'    =>    FileSystem::class,
    ];
}

start 방법

부팅 방법은 다음과 같습니다. 시스템 서비스를 시작하기 전에 수행해야 하는 작업을 정의하는 데 사용됩니다. 예:

<?php
namespace think\captcha;

use think\Route;
use think\Service;
use think\Validate;

class CaptchaService extends Service
{
    public function boot(Route $route, Validate $validate)
    {
        $route->get('captcha/[:config]', "\think\captcha\CaptchaController@index");
        $validate->extend('captcha', function ($value) {
            return captcha_check($value);
        },  ':attribute错误!');
    }
}


서비스 등록

애플리케이션의 글로벌 공용 파일 service.php에서 시스템 서비스를 정의하면 시스템이 자동으로 등록 및 시작을 완료합니다. 예:

return [
    '\app\service\ConfigService',
    '\app\service\CacheService',
];

확장에 시스템 서비스를 등록해야 하는 경우 먼저 확장에 서비스 클래스를 추가한 후 확장의 작곡가.json 파일에 다음 정의를 추가하세요.

"extra": {
    "think": {
        "services": [
            "think\captcha\CaptchaService"
        ]
    }
},

시스템이 자동으로 이를 실행합니다. 확장 설치 후 service:discover 명령은 서비스 목록을 생성하고 시스템 초기화 중에 자동으로 등록하는 데 사용됩니다.