承接 kyrill/php-di-container 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

kyrill/php-di-container

最新稳定版本:V2.0.0

Composer 安装命令:

composer require kyrill/php-di-container

包简介

A php dependency injection container

README 文档

README

A simple automatic dependency injection container implemented in PHP.

Installation

To install this package, run the following command in your project root:

composer require Kyrill\PhpDiContainer

Usage

Create a container

You can create a container by instantiating the Container class.

<?php
use Kyrill\PhpDiContainer\Container;
$container = new Container();

Register a class

You don’t have to register classes manually. All classes will be automatically resolved unless the constructor has an argument that is not a class.

Register a class with a function

You can register a class with a function by assigning it a unique name and providing a 'ClassDefinition' with constructor arguments, the class namespace, and whether it should be treated as a singleton (default is false). If no arguments are needed, you can pass an empty array.

$container->register('name', new ClassDefinition(['argument1', 'argument2'], 'namespace\\classname/', true));

Register classes by a file

You can create a JSON file with the following structure to register classes, aliases, or interfaces:

{
  "services": {
    "namespace\\classname": {
      "arguments": {
        "test": "\\Kyrill\\PhpDiContainer\\TestInterface",
        "foo": "bar"
      }
    },
    "namespace\\alias": {
      "class": "Kyrill\\PhpDiContainer\\Test",
      "arguments": {
        "test": "Kyrill\\PhpDiContainer\\TestInterface",
        "foo": "bar"
      }
    }
  }
}

You can use aliases to register classes or interfaces. Aliases are useful if you want to use a class or interface with a different name. For aliases and interfaces you have to use the class key. The arguments key is optional. If you want to use a class or interface without arguments.

Register file

To register the file you need to make a ClassRegistar class. You can register the file by using the registerFile function. By default, there is a JsonFileReader class. This class reads a json file and registers the classes or interfaces. But you can make your own FileReader class.

$classRegister = new ClassRegistar();
$classRegister->registerFile('.\di.json', new JsonFileReader(), $container);
Make Your Own FileReader

To create your own FileReader class, implement the FileReaderInterface. This interface defines a single method: readFile(). The method must return an array of classes, aliases, or interfaces.

The file must start with the keyword services, and all classes, aliases, or interfaces should be listed under it.

Get a Class

You can retrieve a class using the resolve function. To resolve an alias, pass the alias namespace as a string, like this: 'namespace\\alias'.

<?php
$container->resolve(Classname::class);

License

This project is licensed under the MIT License - see the LICENSE.md file for details

统计信息

  • 总下载量: 26
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-11-15