Systemdienste



Dienstdefinition

Am einfachsten ist es, einen Dienst über die Befehlszeile zu generieren:

php think make:service  FileSystemService

Der Dienst erstellt automatisch zwei leere Methoden: die Registrierungs- und die Boot-Methode.

Registrierungsmethode

Die Registrierungsmethode wird normalerweise zum Registrieren von Systemdiensten verwendet, ähnlich dem Dienstanbieter in Laravel. Zum Beispiel:

<?php
namespace app\service;

use my\util\FileSystem;

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

Registrierungsmethode erfordert keine Parameter

<?php
namespace app\service;

use my\util\FileSystem;

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

Startmethode

Boot-Methode wird verwendet, um zu definieren, was vorher benötigt wird Starten eines Systemdienstes Führen Sie den Vorgang aus. Zum Beispiel:

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


Dienstregistrierung

Definieren Sie den Systemdienst in der globalen öffentlichen Datei service.php der Anwendung und Das System vervollständigt die Registrierung automatisch und startet. Beispiel:

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

Wenn Sie einen Systemdienst in Ihrer Erweiterung registrieren müssen, fügen Sie zunächst eine Dienstklasse in der Erweiterung hinzu und fügen Sie dann die folgende Definition in der Datei „composer.json“ der Erweiterung hinzu:

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

in Nach der Installation der Erweiterung führt das System automatisch den Befehl service:discover aus, um eine Dienstliste zu erstellen und diese während des Systeminitialisierungsprozesses automatisch zu registrieren.