Antes de comenzar con el tema, cree dos archivos nuevos en el directorio de controladores:
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.
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.
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 clase App actúa como una interfaz para el Contenedor, proporcionando una interfaz conveniente para acceder a los servicios.
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 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:
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.
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