Services système



Définition du service

Le moyen le plus simple est d'utiliser la ligne de commande pour générer un service :

php think make:service  FileSystemService

Le service créera automatiquement deux méthodes vides : les méthodes d'enregistrement et de démarrage.

Méthode d'enregistrement

la méthode de registre est généralement utilisée pour enregistrer des services système, similaires aux fournisseurs de services dans Laravel, par exemple :

<?php
namespace app\service;

use my\util\FileSystem;

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

la méthode de registre ne nécessite pas de paramètres

<?php
namespace app\service;

use my\util\FileSystem;

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

la méthode de démarrage

la méthode de démarrage est utilisé pour définir les opérations qui doivent être effectuées avant de démarrer un service système. Par exemple :

<?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错误!');
    }
}


Enregistrement du service

Définissez le service système dans le fichier public global service.php de l'application, et le système terminera automatiquement l'enregistrement et le démarrage. Par exemple :

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

Si vous devez enregistrer un service système dans votre extension, ajoutez d'abord une classe de service dans l'extension, puis ajoutez la définition suivante dans le fichier composer.json de l'extension :

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

Le système l'exécutera automatiquement après l'installation de l'extension La commande service:discover est utilisée pour générer une liste de services et l'enregistrer automatiquement lors de l'initialisation du système.