定制 chiron/injector 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

chiron/injector

Composer 安装命令:

composer require chiron/injector

包简介

Give it a nice description!

README 文档

README

Build Status Static Analysis

CodeCov

Latest Stable Version Total Downloads Monthly Downloads Total Downloads

Latest Version Total Downloads

A dependency injection implementation based on autowiring and PSR-11 compatible dependency injection containers.

Features

  • Injects dependencies when calling functions and creating objects
  • Works with any dependency injection container (DIC) that is PSR-11 compatible
  • Accepts additional dependencies and arguments passed as array
  • Allows passing arguments by parameter name in the array
  • Resolves object type dependencies from the container and the passed array by parameter type declaration
  • Resolves variadic arguments i.e. function (MyClass ...$a)

Requirements

  • PHP 7.4 or higher.

Installation

The package could be installed with composer:

composer require chiron/injector

About

Injector can automatically resolve and inject dependencies when calling functions and creating objects.

It therefore uses Reflection to analyze the parameters of the function to call, or the constructor of the class to instantiate and then tries to resolve all arguments by several strategies.

The main purpose is to find dependency objects - that is arguments of type object that are declared with a classname or an interface - in a (mandatory) PSR-11 compatible dependency injection container (DIC). The container must therefore use the class or interface name as ID.

In addition, an array with arguments can be passed that will also be scanned for matching dependencies. To make things really flexible (and not limited to objects), arguments in that array can optionally use a function parameter name as key. This way basically any callable can be invoked and any object be instantiated by the Injector even if it uses a mix of object dependencies and arguments of other types.

Basic Example

// A function to call
$fn = function (Foo $a, Bar $b, int $c) { /* ... */ };

// Arbitrary PSR-11 compatible object container
$container = new \some\di\Container([
    Foo::class => new Foo(), // will be used as $a
]);

// Prepare the injector
$injector = new Injector($container);

// Use the injector to call the function and resolve dependencies
$result = $injector->invoke($fn, [
    'c' => 15,  // will be used as $c
    new Bar(),  // will be used as $b
]);

Documentation

Documentation can be found here.

Testing

Unit testing

The package is tested with PHPUnit. To run tests:

composer phpunit

Static analysis

The code is statically analyzed with Phpstan. To run static analysis:

composer phpstan

Coding standard

The code should follow the Chiron Coding Standard. To apply coding standard:

# detect violations of the defined coding standard.
composer check-style
# automatically correct coding standard violations.
composer fix-style

License

The Chiron Injector is free software. It is released under the terms of the MIT License. Please see LICENSE for more information.

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-06-01

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固