시스템 서비스
서비스 정의
가장 쉬운 방법은 명령줄을 사용하여 서비스를 생성하는 것입니다.
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 명령은 서비스 목록을 생성하고 시스템 초기화 중에 자동으로 등록하는 데 사용됩니다.