システムサービス



サービス定義

コマンド ラインを使用してサービスを生成するのが最も簡単な方法です。

php think make:service  FileSystemService

サービスは、register メソッドと boot メソッドという 2 つの空のメソッドを自動的に作成します。

Register メソッド

register メソッドは、通常、Laravel のサービスプロバイダーと同様に、システムサービスを登録するために使用されます。例:

<?php
namespace app\service;

use my\util\FileSystem;

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

The register メソッドは不要です。 パラメータ

<?php
namespace app\service;

use my\util\FileSystem;

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

スタートアップ メソッド

boot メソッドは、システム サービスを開始する前に実行する必要がある操作を定義するために使用されます。例:

<?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',
];

拡張機能にシステム サービスを登録する必要がある場合は、まず拡張機能にサービス クラスを追加してから、拡張機能のcomposer.json ファイルに次の定義を追加します。

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

In 拡張機能をインストールすると、システムは service:discover コマンドを自動的に実行してサービス リストを生成し、システムの初期化プロセス中にそれを自動的に登録します。