Maison  >  Article  >  développement back-end  >  Bootstrap du conteneur de services : mise en route

Bootstrap du conteneur de services : mise en route

PHPz
PHPzoriginal
2024-07-16 16:21:59587parcourir

Service Container Bootstrap: Getting Started

Avant de démarrer le sujet, créez deux nouveaux fichiers dans le répertoire des contrôleurs :

  1. destroy.php qui contient le code utilisé pour supprimer une note de la base de données.
  2. store.php qui contient le code pour créer une nouvelle note à l'aide de formulaires et de méthodes de requête.

Introduction au conteneur de services

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.

Classe de conteneur

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.

  • bind() : enregistre un service auprès du conteneur.
  • resolve() : Récupère un service du conteneur.
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);
    }
}

Classe d'application

La classe App agit comme une interface pour le conteneur, fournissant une interface pratique pour accéder aux services.

  • setContainer() : définit l'instance de conteneur pour l'application.
  • container() : récupère l'instance de conteneur.
  • bind() : enregistre un service auprès du conteneur.
  • resolve() : Récupère un service du conteneur.
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);
    }
}

Amorçage

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 :

  1. Crée une nouvelle instance de conteneur ($container)
  2. Enregistre les services auprès du conteneur à l'aide de la méthode bind (par exemple, CoreDatabase)
  3. Définit le conteneur pour l'application à l'aide de App::setContainer($container)

Contrôleur

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn