Avant de démarrer le sujet, créez deux nouveaux fichiers dans le répertoire des contrôleurs :
Un conteneur de services est un modèle de conception qui centralise la gestion des dépendances entre les objets, offrant ainsi un moyen structuré d'accéder et de gérer les services au sein d'une application.
Il agit comme un registre des services au sein d'un site Web.
Créez d’abord un fichier nommé Controller.php dans le répertoire Core. Dans ce cas, initialisez la classe Container, responsable de la gestion des liaisons et des résolutions de service.
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); } }
La classe App agit comme une interface pour le conteneur, fournissant une interface pratique pour accéder aux services.
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 est un point d'une application, où tout est configuré et initialisé.
$container = new Container(); $container->bind('Core\Database', function () { $config = require base_path('config.php'); return new Database($config['database']); }); App::setContainer($container);
Dans ceci, le processus d'amorçage :
Les services peuvent être résolus à partir du conteneur dans les contrôleurs à l'aide de la méthode App::resolve().
$db = App::resolve('Core\Database');
Maintenant, un conteneur de services est correctement construit et vous pouvez voir que le projet fonctionne bien.
J'espère que vous l'avez bien compris.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3