fuelphp/dependency-injection

此包已被废弃,不再维护。没有建议的替代包。

基于 League\Container 的 Fuel 依赖包

dev-master / 2.0.x-dev 2016-05-09 14:44 UTC

This package is auto-updated.

Last update: 2023-01-30 20:25:22 UTC


README

Build Status Code Coverage Quality Score

基于 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)。有关更多信息,请参阅 许可证文件