"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Arranque del contenedor de servicios: introducción

Arranque del contenedor de servicios: introducción

Publicado el 2024-08-07
Navegar:641

Service Container Bootstrap: Getting Started

Antes de comenzar con el tema, cree dos archivos nuevos en el directorio de controladores:

  1. destroy.php que contiene el código utilizado para eliminar una nota de la base de datos.
  2. store.php que contiene el código para crear una nueva nota usando formularios y métodos de solicitud.

Introducción al contenedor de servicios

Un contenedor de servicios es un patrón de diseño que centraliza la gestión de dependencias entre objetos, proporcionando una forma estructurada de acceder y gestionar servicios dentro de una aplicación.

Actúa como registro de servicios dentro de un sitio web.

Clase de contenedor

Primero cree un archivo llamado Controller.php en el directorio Core. En esto, inicialice la clase Contenedor, que es responsable de administrar los enlaces y resoluciones de servicios.

  • bind(): Registra un servicio con el contenedor.
  • resolve(): recupera un servicio del contenedor.
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);
    }
}

Clase de aplicación

La clase App actúa como una interfaz para el Contenedor, proporcionando una interfaz conveniente para acceder a los servicios.

  • setContainer(): establece la instancia del contenedor para la aplicación.
  • container(): Recupera la instancia del contenedor.
  • bind(): Registra un servicio con el contenedor.
  • resolve(): recupera un servicio del contenedor.
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);
    }
}

Oreja

Bootstrap es un punto de una aplicación, donde todo se configura e inicializa.

$container = new Container();
$container->bind('Core\Database', function () {
    $config = require base_path('config.php');
    return new Database($config['database']);
});
App::setContainer($container);

En este, el proceso de arranque:

  1. Crea una nueva instancia de contenedor ($container)
  2. Registra servicios con el contenedor usando el método de vinculación (por ejemplo, Core\Database)
  3. Establece el contenedor para la aplicación usando App::setContainer($container)

Controlador

Los servicios se pueden resolver desde el contenedor en los controladores usando el método App::resolve().

$db = App::resolve('Core\Database');

Ahora un contenedor de servicios está construido correctamente y puede ver que el proyecto está funcionando bien.

Espero que lo hayas entendido claramente.

Declaración de liberación Este artículo se reproduce en: https://dev.to/ghulam_mujtaba_247/service-container-bootstrap-getting-started-293j?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3