fuelphp/dependency

该软件包已被废弃,不再维护。未建议替代包。

基于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:14 UTC


README

Build Status Code Coverage Quality Score

基于League\Container的Fuel依赖包。

使用方法

Dependency包是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)。请参阅许可证文件以获取更多信息。