icanboogie/service

一个与依赖注入容器无关的服务提供者

dev-master 2017-05-25 11:04 UTC

This package is auto-updated.

Last update: 2024-09-17 03:01:15 UTC


README

Release Build Status Code Quality Code Coverage Packagist

ICanBoogie/Service 提供了一种使用您最喜欢的依赖注入容器以最透明的方式引用、解析和调用服务的方法。

请考虑以下示例

<?php

use ICanBoogie\Service\ServiceProvider;
use function ICanBoogie\Service\ref;

ServiceProvider::define(function ($id) {

	if ($id === 'hello')
	{
		return function ($name = "world") {
			return "Hello $name!";
		};
	}

	throw new \LogicException("Unknown service: $id");
});

# getting a service through the provider
$service = ServiceProvider::provide('hello');
echo $service("Madonna");
// Hello Madonna!

# using a reference
$reference = ref('hello');
echo $reference;
// hello
echo $reference("Madonna");
// Hello Madonna! 

引用是可调用的

使用 ref 创建的服务引用在您需要提供一个可调用项但不想立即实例化该可调用项时特别有用

<?php

use function ICanBoogie\Service\ref;

class Compute
{
	public function __construct(callable $computer)
	{
		// …
	}

	// …
}

$compute = new Compute(ref('expansive_instance'));

引用可以导出

ServiceReference 实例可以安全地使用 var_export() 导出

<?php

use ICanBoogie\Service\ServiceReference;

$id = 'my_service';
$reference = new ServiceReference($id);
$dump = var_export($reference, true);

$r = eval("return $dump;");

echo get_class($r);   // ICanBoogie\Service\ServiceReference 
echo (string) $r;     // my_service

要求

该包需要 PHP 5.6 或更高版本。

安装

安装此包的推荐方式是通过 Composer

$ composer require ICanBoogie/Service

克隆存储库

该包可在 GitHub 上找到,其存储库可以使用以下命令行克隆

$ git clone https://github.com/ICanBoogie/Service.git

文档

该包作为 [ICanBoogie][] 框架的一部分进行了文档编制,文档。您可以使用 make doc 命令生成包及其依赖项的文档。文档生成在 build/docs 目录中。需要 ApiGen。可以使用 make clean 命令清理该目录。

测试

测试套件使用 make test 命令运行。需要全局可用的 PHPUnitComposer 才能运行套件。该命令会根据需要安装依赖项。使用 make test-coverage 命令运行测试套件并在 build/coverage 中创建 HTML 覆盖率报告。可以使用 make clean 命令清理该目录。

该包由 Travis CI 持续测试。

Build Status Code Coverage

许可

ICanBoogie/Service 在新 BSD 许可证下授权 - 有关详细信息,请参阅 LICENSE 文件。