icanboogie / service
一个与依赖注入容器无关的服务提供者
dev-master
2017-05-25 11:04 UTC
Requires
- php: >=5.6
This package is auto-updated.
Last update: 2024-09-17 03:01:15 UTC
README
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
命令运行。需要全局可用的 PHPUnit 和 Composer 才能运行套件。该命令会根据需要安装依赖项。使用 make test-coverage
命令运行测试套件并在 build/coverage
中创建 HTML 覆盖率报告。可以使用 make clean
命令清理该目录。
该包由 Travis CI 持续测试。
许可
ICanBoogie/Service 在新 BSD 许可证下授权 - 有关详细信息,请参阅 LICENSE 文件。