alchemy/lazy-command-bundle

v0.1.0 2015-07-27 13:15 UTC

This package is auto-updated.

Last update: 2024-09-15 02:57:50 UTC


README

用于在Symfony命令中实现更好的依赖注入的包

安装

就像在终端中运行一个命令一样简单

composer require alchemy/lazy-command-bundle.

当然,你还需要事先安装Composer

使用

只需将包添加到您的内核中。目前,这是一个零配置、无烦恼的代理。

背景

在Symfony中使用命令作为服务可能会很痛苦,因为当你的依赖开始使用各种资源的连接(数据库、消息队列等)时,因为所有命令都必须实例化,以便Symfony控制台应用程序可以正常运行。

这个包试图通过用懒代理(使用优秀的ProxyManager库)替换你的命令的所有服务依赖来解决这个问题,确保只有在需要时才获取外部资源。

另一种方法可能是使用Symfony DI的内置功能将你的命令的依赖项标记为懒,但是当你的依赖在多个上下文中重复使用时(即,一个同时被控制台应用程序和网络应用程序使用的服务),并且在这些上下文中不需要(或者更糟,是性能损失)代理时,这种方法不是最优的。

工作原理

该包向你的服务容器的构建过程中添加一个编译器传递,用标记有console.command标签的服务的懒代理替换所有服务引用。

在HTTP上下文中没有性能损失(除非你实际上在你的控制器中使用了你的命令,但那时你可能还有更大的问题要担心)。

目前没有基准测试,但代理你的命令依赖可能比获取实际上不会使用的外部资源便宜。

待办事项

  • 添加配置设置以按需“懒化”命令
  • 代理用于setter注入的依赖项
  • 添加LICENCE(如果你想知道,它是MIT)
  • 添加测试
  • 添加CI(Travis,Scrutinizer)
  • 添加徽章
  • 将库添加到packagist
  • 创建第一个版本