Heim >Backend-Entwicklung >PHP-Tutorial >Service-Container-Bootstrap: Erste Schritte

Service-Container-Bootstrap: Erste Schritte

PHPz
PHPzOriginal
2024-07-16 16:21:59623Durchsuche

Service Container Bootstrap: Getting Started

Bevor Sie mit dem Thema beginnen, erstellen Sie zwei neue Dateien im Controller-Verzeichnis:

  1. destroy.php, die den Code enthält, der zum Löschen einer Notiz aus der Datenbank verwendet wird.
  2. store.php, die den Code zum Erstellen einer neuen Notiz mithilfe von Formularen und Anforderungsmethoden enthält.

Einführung in den Service-Container

Ein Service-Container ist ein Entwurfsmuster, das die Verwaltung von Abhängigkeiten zwischen Objekten zentralisiert und eine strukturierte Möglichkeit bietet, auf Dienste innerhalb einer Anwendung zuzugreifen und diese zu verwalten.

Es fungiert als Registrierung für Dienste innerhalb einer Website.

Containerklasse

Erstellen Sie zunächst eine Datei mit dem Namen Controller.php im Core-Verzeichnis. Initialisieren Sie dabei die Container-Klasse, die für die Verwaltung von Dienstbindungen und -auflösungen verantwortlich ist.

  • bind(): Registriert einen Dienst beim Container.
  • resolve(): Ruft einen Dienst aus dem Container ab.
class Container {
    protected $bindings = [];

    public function bind($key, $resolver) {
        $this->bindings[$key] = $resolver;
    }

    public function resolve($key) {
        if (!array_key_exists($key, $this->bindings)) {
            throw new Exception("No matching binding found for {$key}");
        }
        $resolver = $this->bindings[$key];
        return call_user_func($resolver);
    }
}

App-Klasse

Die App-Klasse fungiert als Schnittstelle für den Container und bietet eine praktische Schnittstelle für den Zugriff auf Dienste.

  • setContainer(): Legt die Containerinstanz für die App fest.
  • container(): Ruft die Containerinstanz ab.
  • bind(): Registriert einen Dienst beim Container.
  • resolve(): Ruft einen Dienst aus dem Container ab.
class App {
    protected static $container;

    public static function setContainer($container) {
        static::$container = $container;
    }

    public static function container() {
        return static::$container;
    }

    public static function bind($key, $resolver) {
        static::container()->bind($key, $resolver);
    }

    public static function resolve($key) {
        return static::container()->resolve($key);
    }
}

Bootstrap

Bootstrap ist ein Punkt einer Anwendung, an dem alles eingerichtet und initialisiert wird.

$container = new Container();
$container->bind('Core\Database', function () {
    $config = require base_path('config.php');
    return new Database($config['database']);
});
App::setContainer($container);

Hier der Bootstrap-Prozess:

  1. Erstellt eine neue Containerinstanz ($container)
  2. Registriert Dienste beim Container mithilfe der Bind-Methode (z. B. CoreDatabase)
  3. Legt den Container für die App mit App::setContainer($container) fest.

Regler

Dienste können mithilfe der App::resolve()-Methode aus dem Container in Controllern aufgelöst werden.

$db = App::resolve('Core\Database');

Jetzt ist ein Service-Container ordnungsgemäß erstellt und Sie können sehen, dass das Projekt gut funktioniert.

Ich hoffe, dass Sie es klar verstanden haben.

Das obige ist der detaillierte Inhalt vonService-Container-Bootstrap: Erste Schritte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn