zalevsk1y/container-builder
Composer 安装命令:
composer require zalevsk1y/container-builder
包简介
Container Builder, provides a simple implementation of a Dependency Injection Container. It allows for easy management of object instances and their dependencies, allowing for more flexible and maintainable code. The module includes methods for adding definition files, retrieving instances, and call
README 文档
README
Introduction
The ContainerBuilder is a Dependency Injection (DI) tool that allows you to handle dependencies and create instances of classes with their dependencies. The tool provides an implementation of the Container Interface, providing a simple and effective way to manage dependencies and resolve them.
Every class that is created using the definition file or the set method is saved in the container and will be returned by the get method as a singleton instance. This means that subsequent calls to get the same class will return the previously created instance.
New Feature: Manual Object Addition
Now, you can manually add objects to the DI container using the set method. This allows you to set a specific instance of a class, providing more control over the objects stored in the container.
use ContainerBuilder\DI;
$container = new DI();
$container->addDefinitions(__DIR__ . '/config.php');
$instance = $container->set(new ClassName($some_deps));
$instance = $container->get(ClassName::class);
API
The API of the ContainerBuilder is simple and straightforward, allowing you to:
- Add definitions using the addDefinitions method
- Get an instance of a class using the get method
- Call a method of an instance using the call method
- Set a specific instance of a class using the set method
Configuration File Format
The configuration file is an array of definitions where each key represents a class and its value is an array of dependencies. The format of the configuration file is as follows:
return array(
ClassName1::class=>[Dependency1, Dependency2, ...],
ClassName2::class=>[Dependency3, Dependency4, ...],
...
)
Here, ClassName1 and ClassName2 are classes that have dependencies Dependency1, Dependency2, Dependency3, and Dependency4, respectively.
Example
Here is an example of how you can use the ContainerBuilder:
use ContainerBuilder\DI;
$container = new DI();
$container->addDefinitions(__DIR__ . '/config.php');
$instance = $container->get(ClassName::class);
$result = $container->call([$instance, 'methodName'], [$arg1, $arg2, ...]);
In this example, config.php is the configuration file that contains the definitions of the classes and their dependencies. The addDefinitions method is used to load the definitions, and the get method is used to get an instance of the ClassName class. The call method is used to call the methodName method of the ClassName instance and pass the arguments $arg1, $arg2, etc.
Thank you 🙏 for support - Atlant Web Agency.
zalevsk1y/container-builder 适用场景与选型建议
zalevsk1y/container-builder 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 161 次下载、GitHub Stars 达 1, 最近一次更新时间为 2023 年 02 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 zalevsk1y/container-builder 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 zalevsk1y/container-builder 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 161
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 19
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-02-14