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.