icanboogie / bind-symfony-dependency-injection
将 symfony/dependency-injection 绑定到 ICanBoogie
Requires
- php: >=7.2
- icanboogie/icanboogie: ^4.0
- icanboogie/service: ^4.0
- symfony/config: ^4.0|^5.0
- symfony/dependency-injection: ^4.0|^5.0
- symfony/yaml: ^4.0|^5.0
Requires (Dev)
- phpunit/phpunit: ^8.5
README
与 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/config
和 default/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 持续测试。
行为准则
此项目遵守 Contributor Code of Conduct。通过参与此项目和其社区,您应遵守此准则。
贡献
有关详细信息,请参阅 CONTRIBUTING。
许可证
icanboogie/bind-symfony-dependency-injection 在 BSD-3-Clause 许可下发布。