Maison >développement back-end >tutoriel php >Bootstrap du conteneur de services : mise en route
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 une manière structurée d'accéder et de gérer les services au sein d'une application.
Il agit comme un registre de 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, qui est 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!