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

Bootstrap du conteneur de services : mise en route

PHPz
Libérer: 2024-07-16 16:21:59
original
665 Les gens l'ont consulté

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);
    }
}
Copier après la connexion

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);
    }
}
Copier après la connexion

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);
Copier après la connexion

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');
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal