fuelphp / dependency-injection
此包已被废弃,不再维护。没有建议的替代包。
基于 League\Container 的 Fuel 依赖包
dev-master / 2.0.x-dev
2016-05-09 14:44 UTC
Requires
- php: >=5.4
- league/container: ^2.0
Requires (Dev)
- codeception/codeception: ~2.0
- scrutinizer/ocular: ^1.3
This package is auto-updated.
Last update: 2023-01-30 20:25:22 UTC
README
基于 League\Container 的 Fuel 依赖包。
使用方法
依赖包是 League\Container 的扩展,负责在 FuelPHP 框架中处理依赖。大多数功能相同,但也有一些自定义功能。这意味着我们不鼓励任何人单独使用此包,因为这些添加的功能主要是针对 FuelPHP 的。
本文档涵盖了容器的基本使用方法以及添加的功能。对于完整文档,请查看原始的 文档。
容器
容器是依赖包的主要组件,将所有部分结合起来。您可以将其视为(PHP)对象存储。容器是您注册资源、服务提供者并检索依赖的地方。
$container = new Fuel\Dependency\Container;
定义
定义可以是类字符串名称或返回实例或类名称的闭包。
字符串定义
// Register $container->add('string', 'stdClass'); // Resolve $instance = $container->get('string');
闭包定义
// Register $container->add('closure.object', function() { return new stdClass; }); // Resolve $instance = $container->get('closure.object');
服务提供者
服务提供者用于向容器公开包。服务提供者可以向容器提供资源,也可以在命名空间上操作。命名空间是一个字符串前缀,它将标识符映射到提供者的工厂方法。
use League\Container\ServiceProvider; class MyProvider extends ServiceProvider { protected $provides = ['some.identifier', 'other.resource']; public function register() { $this->container->add('some.identifier', 'stdClass'); $this->container->singleton('other.resource', function() { return new Something($this->container->resolve('database.connection')); )); } }
Fuel 扩展
Fuel 为容器添加了两个主要功能
- 创建多例实例
- 创建新实例,无论它是单例还是非单例
多例
// Register $container->add('closure::object1', function() { return new stdClass; }); $container->add('closure::object2', function() { return new stdClass; }); // Resolve object1 = $container->multiton('closure', 'object1'); objects = $container->multiton('closure');
Forge
// Register $container->singleton('closure.object', function() { return new stdClass; }); // Resolve // Always returns a newly resolved definition $instance = $container->forge('closure.object');
贡献
感谢您考虑为 FuelPHP 框架做出贡献。请参阅 CONTRIBUTING 以获取详细信息。
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。