服务容器指导程序:入门-php教程

首页 2024-07-09 18:53:51

在开始正题之前,在controllers目录下新建两份文件:

  1. destroy.php 从数据库中删除注释的代码。
  2. store.php 用表单和请求方法创建新笔记的代码。
服务容器简介

服务容器是集中管理对象之间依赖关系的设计模式,为访问和管理应用程序提供结构化的服务。

它作为网站服务的注册表。

集装箱类

首先,在Core目录中创建一个名为Controler.php文件。在这里初始化 Container 负责绑定和分析管理服务。

  • bind():向容器注册服务。
  • resolve():从容器中检索服务。
类容器{
    被保护的$绑定= [];

    绑定公共函数($key,$resolver){
        $this->绑定[$key] = $resolver;
    }

    公共函数解析($key){
        if (!array_key_exists($key, $this->bindings)) {
            throw new Exception("没有找到 {$key} 的匹配绑定");
        }
        $resolver = $this->绑定[$key];
        返回 call_user_func($resolver);
    }
}
应用程序类

作为Container的接口,App类为访问服务提供了方便的接口。

  • setContainer():设置App的容器实例。
  • container():检索容器实例。
  • bind():向容器注册服务。
  • resolve():从容器中检索服务。
类应用程序{
    静态$容器受保护;

    公共静态函数 setContainer($container) {
        静态::$容器=$容器;
    }

    公共静态函数容器(){
        返回静态::$容器;
    }

    公共静态函数bindd($key, $resolver) {
        static::container()->bind($key, $resolver);
    }

    公共静态函数分析($key){
        返回静态::container()->resolve($key);
    }
}
引导程序

Bootstrap 它是应用程序的一个点,一切都在其中设置和初始化。

$container = new Container();
$container->bind('CoreDatabase', function () {
    $config = require base_path('config.php');
    返回新数据库($config['database']);
});
应用程序::setContainer($container);

在此,引导过程:

  1. 创建一个新的容器实例($container)
  2. 使用bind方法向容器注册服务(如Coredatabase)
  3. 使用 App::setContainer($container) 容器设置应用程序
控制器

可以使用 App::resolve() 方法来自控制器中的容器分析服务。

$db = App::resolve('CoreDatabase');

现在服务容器已经正确构建,项目运行良好。

我希望你能清楚地理解。

以上是服务容器指导程序:详细介绍,请关注其他相关文章!


p