icanboogie/bind-symfony-dependency-injection

将 symfony/dependency-injection 绑定到 ICanBoogie

v5.0.0 2022-04-10 15:02 UTC

This package is auto-updated.

Last update: 2024-09-20 15:00:50 UTC


README

Release Code Quality Code Coverage Packagist

icanboogie/service 一起,此包将 symfony/dependency-injection 绑定到 ICanBoogie,并允许容器用于提供服务。

获取服务

可以使用服务引用或容器来获取服务。

以下示例演示了如何使用引用获取服务

<?php

use function ICanBoogie\Service\ref;

$reference = ref('a_callable_service');
$result = $reference(1, 2, 3);

$reference = ref('a_service');
$service = $reference->resolve();
$service->do_something();

以下示例演示了如何使用容器本身获取服务

<?php

/* @var $app \ICanBoogie\Application */
/* @var $container \Symfony\Component\DependencyInjection\Container */

$container = $app->container;
$service = $container->get('a_service');
$service->do_something();

获取绑定到应用程序的服务

通常,ICanBoogie 的组件通过 原型系统ICanBoogie\Application 实例添加 getter,这意味着您可以使用 $app->initial_request 访问初始请求或使用 $app->session 访问会话。以这种方式定义的服务也可以通过容器自动访问,这意味着它们可以用作引用 ref('session') 或通过容器 $app->container->get('session') 获取。

获取配置参数

所有应用程序配置参数都作为容器参数提供,例如 $app->container->getParameter('app.repository.cache)`。

注意:为了避免冲突,所有应用程序参数都以前缀 app. 开头。

定义服务

服务使用 config 目录中的 services.yml 文件定义。它们在创建容器时收集,就像常规的 配置文件 一样。

此包中包含的测试展示了如何在 all/configdefault/config 中定义 services.yml 文件。组件和模块可以使用此功能注册自己的服务,并自动使它们可用于应用程序。

关于容器代理

Application::boot 期间定义的服务提供者是 ContainerProxy 的实例,它仅在需要解决服务时才构建服务容器。

以下示例演示了如何获取服务提供者和服务容器

<?php

use ICanBoogie\Service\ServiceProvider;

/* @var $proxy \ICanBoogie\Binding\SymfonyDependencyInjection\ContainerFactory */

$proxy = ServiceProvider::defined();
$container = $proxy->container;

配置容器

容器使用 container 配置片段进行配置

<?php

// config/container.php

use ICanBoogie\Binding\SymfonyDependencyInjection\ConfigBuilder;
use ICanBoogie\Binding\SymfonyDependencyInjection\Extension\ApplicationExtension;

return fn(ConfigBuilder $config) => $config
    ->add_extension(ApplicationExtension::class)
    ->enable_caching();

持续集成

该项目通过 GitHub actions 持续测试。

Tests Static Analysis Code Style

行为准则

此项目遵守 Contributor Code of Conduct。通过参与此项目和其社区,您应遵守此准则。

贡献

有关详细信息,请参阅 CONTRIBUTING

许可证

icanboogie/bind-symfony-dependency-injectionBSD-3-Clause 许可下发布。