v1.0.1 2021-12-29 17:27 UTC

This package is auto-updated.

Last update: 2024-09-29 04:37:15 UTC


README

描述

库包含依赖注入组件,允许管理对象实例化。

要求

  • 脚本语言:PHP:版本 7 或 8

安装

有几种可能的方式

Composer

  1. 要求

    需要安装Composer。更多信息请访问:https://getcomposer.org.cn

  2. 命令:在项目根目录下移动

     cd "<project_root_path>"
    
  3. 命令:安装

     php composer.phar require liberty_code/di ["<version>"]
    
  4. 注意

    • 包含供应商

      如果项目使用composer,必须包含供应商

        require_once('<project_root_path>/vendor/autoload.php');
      
    • 配置

      安装命令允许在composer文件中添加:

        {
            "require": {
                "liberty_code/di": "<version>"
            }
        }
      

包含

  1. 下载

    • 下载以下仓库。
    • 将其放在仓库根目录下。
  2. 包含源代码

     require_once('<repository_root_path>/include/Include.php');
    

配置

主要配置

  • 使用以下类来配置特定元素

      use liberty_code\di\config\model\DefaultConfig;
      DefaultConfig::instanceGetDefault()->get|set...();
    
  • 可配置元素

    • 全局信息

用法

依赖

依赖系统允许从特定配置和指定依赖或类路径实例化和获取对象。

元素

  • 依赖

    允许设计一个依赖,它是一个包含配置数组的项,用于实例化指定的类并获取对象。

  • 服务

    扩展依赖功能。使用配置数组中的类路径和构造函数参数定义来为指定的类创建实例。

  • 偏好

    扩展依赖功能。使用配置数组中的配置来获取指定类的实例。

  • DependencyCollection

    允许设计依赖集合。使用依赖列表来实例化指定的类并从指定的依赖或字符串类路径获取对象。

  • DependencyFactory

    允许设计一个依赖工厂,以提供新的或指定的依赖实例,从指定的配置。

  • StandardDependencyFactory

    扩展依赖工厂功能。提供依赖实例。

示例

// Get dependency factory
use liberty_code\di\dependency\factory\standard\model\StandardDependencyFactory;
$dependencyFactory = new StandardDependencyFactory();
...
// Get new dependency from configuration
$dependency = $dependencyFactory->getObjDependency(array(...));
...

Builder

Builder允许使用路由来填充依赖集合。

元素

  • Builder

    使用源数据数组来填充依赖集合。

示例

// Get dependency collection
use liberty_code\di\dependency\model\DefaultDependencyCollection;
$dependencyCollection = new DefaultDependencyCollection();
...
// Get dependency builder
use liberty_code\di\build\model\DefaultBuilder;
$dependencyBuilder = new DefaultBuilder($dependencyFactory);
...
// Hydrate dependency collection
$dependencyBuilder->setTabDataSrc(array(...));
$dependencyBuilder->hydrateDependencyCollection($dependencyCollection);
...
foreach($dependencyCollection->getTabKey() as $key) {
    echo($dependencyCollection->getObjDependency($key)->getStrKey() .'<br />');
}
/**
 * Show: 
 * Dependency key 1
 * ...
 * Dependency key N
 */
...

Provider

Provider允许使用依赖集合实例化和获取配置实例。

示例

use liberty_code\di\provider\model\DefaultProvider;
$provider = new DefaultProvider($dependencyCollection);
...
// Show specified instance
var_dump($provider->get(...));
...

Factory

Factory允许使用Provider实例化和获取新实例。

元素

  • Factory

    允许设计一个工厂,从指定的DI Provider提供新实例。可以认为是所有工厂类型的基础。