Bevor Sie mit dem Thema beginnen, erstellen Sie zwei neue Dateien im Controller-Verzeichnis:
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.
Erstellen Sie zunächst eine Datei mit dem Namen Controller.php im Kernverzeichnis. Initialisieren Sie dabei die Container-Klasse, die für die Verwaltung von Dienstbindungen und -auflösungen verantwortlich ist.
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); } }
Die App-Klasse fungiert als Schnittstelle für den Container und bietet eine praktische Schnittstelle für den Zugriff auf Dienste.
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 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);
In diesem Fall der Bootstrap-Prozess:
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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3