ivangrigorov/php-simple-dicontainer

PHP项目的DI容器

1.0.0.0 2019-08-11 16:48 UTC

This package is auto-updated.

Last update: 2024-09-29 05:48:37 UTC


README

欢迎来到PHPDI项目。

嗨,😃 👋

这是一个极简的PHP项目,旨在为任何认为依赖注入(DI)有用的开发者提供一个简单但强大的解决方案。

PHPDI是一个DI容器,允许您在整个项目中控制依赖项。在这里我不会详细解释DI和容器是什么。更多信息,您可以访问这个网站👉 这里

那么,现在关于这个项目

整个实现背后的设计是约定优于配置。这并不意味着您不需要做一些调整,但您不需要做任何特殊的事情。

目前该项目有两个版本:这是官方的第二版。第二版包含了第一版的所有内容。

第一版将不再维护。

beta状态意味着,到目前为止所有测试都已通过,但可能存在一些小错误。

alpha状态意味着,它仍然处于测试阶段,可能不稳定,但您可以尝试使用它,并报告问题、错误和缺少的功能。

PHPDI Build Status (https://img.shields.io/badge/coverage-14%25-orange) (https://img.shields.io/badge/version-stable-green)

配置

Parameterless Injection

Valuetype Injection

Injection with params

在参数中,根节点是构造函数中参数的名称及其中的默认值。

重要: 当前的配置不允许在注入时使用引用类型参数。要获取调用依赖项时引用类型对象,您应该在依赖项类的构造函数中使用容器,并在那里设置其属性为注入的对象。

请参阅项目中的示例。

优势

不再需要无尽的required_once

有一个AutoLoader,它会在需要时自动加载类。只需在LoaderConfig.php文件中指定路径一次即可。

轻松切换服务(注入)提供者

您可以轻松地在开发、测试和生产之间切换不同的配置注入配置。

作用域检查

请确保只有允许的类可以创建实例并使用对象依赖项。

日志选项

记录所有注入的选项 - 哪些示例被使用以及在哪里。

异常日志选项

记录一些捕获的异常的选项 - 哪些示例被使用以及在哪里。

遵循最佳设计原则

检查所有注入是否具有继承的接口的选项。

所有这些内容都可以在Config.php中进行修改

延迟实例化

最初创建一个代理对象,只有在使用时才加载整个对象。

更简单的配置

注入配置现在导出到json文件中,这使得处理不同的配置变得非常容易。

如何使用

composer require ivangrigorov/php-simple-dicontainer

在使用之前,您可以删除doc文件夹、index.phpIURLParser.phpURLParser.php(这些文件仅用于测试)。 更新配置依赖的json文件。

  1. 在您的composer.json文件中添加"autoload": { "classmap": ["vendor/ivangrigorov/php-simple-dicontainer/DI/Lib/"] }
  2. 运行composer update命令
  3. 在您的初始文件中添加require __DIR__."/vendor/autoload.php";
  4. 获取容器实例(静态方法)
  5. 使用正确的参数调用请求的方法。(要获取引用类型对象,请传递以"I"前缀开头的className -> IclassName)。3.1. getInjectionWithParams方法的参数示例 - ["params" => array(["name" => "url"])]); 如果未提供"value",则使用配置中的默认值。

结论

如果您已经读到这一点,恭喜 👏 并感谢您的关注 👍

本项目的许可证是开源的,免费使用。如果您认为它值得,我会很感激一个星或几句好评。

您可以提出问题,报告问题或缺失的功能。您也可以提供想法和解决方案。

联系方式 - ivangrigorov9 at gmail.com