wpfulcrum/container

Fulcrum DI容器模块 - 一个简单的依赖注入容器,扩展Pimple。

3.0.5 2017-12-19 04:40 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:43:06 UTC


README

Build Status Latest Stable Version License

Fulcrum DI容器模块提供了一个精简的依赖注入容器。

依赖注入容器的主要目的是管理对象。通过传递一个封装对象创建过程的闭包,使用容器,你可以

  1. 在不使用new语句或指定其依赖项的情况下创建新对象。
  2. 从容器中获取对象,无需使用单例、静态或全局变量。哇哦!

容器还存储数据集。想象一下,它就像一个大的数组,你可以通过一个唯一的键向其中添加值。功能强大。

说实话,依赖注入容器让你的工作变得非常简单。让它处理

  1. 对象创建及其所有依赖项。
  2. 管理对象。
  3. 在内存中存储数据集。
  4. 检索所需的对象或数据集。

功能

它通过提供以下功能扩展了Pimple

  1. has()方法用于检查容器中是否存在唯一的键。
  2. get()方法用于通过其唯一键从容器中获取某些内容。
  3. registerConcrete()方法 - 提供注册闭包的能力。

安装

使用此组件的最佳方式是通过Composer

composer require wpfulcrum/container

基本用法

创建对象

使用registerConcrete()方法,你可以注册一个闭包,然后由该闭包处理对象的创建及其依赖项。

例如,假设你有一个具有多个依赖项的对象。例如,你正在使用Fulcrum将“投资组合”自定义帖子类型添加到项目中。

这可能就是该CPT的配置

$concreteConfig = [
    'autoload' => true,
    'concrete' => function ($container) {
        $configObj = new Config(YOURPLUGIN_PATH . '/config/post-type/portfolio.php');

        return new PostType(
            $configObj,
            $configObj->postTypeName,
            new PostTypeSupports($configObj)
        );
    },
];

让我们停下来注意几个要点

  1. 包括多个依赖项,例如
    • Config对象
    • 帖子类型名称
    • PostTypeSupports对象。
  2. 创建CPT对象所需的所有内容都封装在这个闭包中。
  3. autoload参数设置为true。因此,在将其注册到容器中时立即创建对象。

使用上述配置,可以将其注册到容器中,如下所示

$container = new DIContainer();
$portfolioCpt = $container->registerConcrete($concreteConfig, 'portfolio_cpt');

贡献

所有反馈、错误报告和pull请求都受欢迎。