Antes de iniciar o tópico, crie dois novos arquivos no diretório de controladores:
Um Service Container é um padrão de design que centraliza o gerenciamento de dependências entre objetos, fornecendo uma maneira estruturada de acessar e gerenciar serviços dentro de um aplicativo.
Ele atua como um registro de serviços dentro de um site.
Primeiro crie um arquivo chamado Controller.php no diretório Core. Neste inicialize a classe Container, que é responsável por gerenciar vinculações e resoluções de serviços.
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); } }
A classe App atua como uma interface para o Container, fornecendo uma interface conveniente para acessar serviços.
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 é um ponto de uma aplicação, onde tudo é configurado e inicializado.
$container = new Container(); $container->bind('Core\Database', function () { $config = require base_path('config.php'); return new Database($config['database']); }); App::setContainer($container);
Neste, o processo de inicialização:
Os serviços podem ser resolvidos a partir do contêiner nos controladores usando o método App::resolve().
$db = App::resolve('Core\Database');
Agora um contêiner de serviço está construído corretamente e você pode ver que o projeto está funcionando bem.
Espero que você tenha entendido claramente.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3