提问人:Tomasz Filipek 提问时间:1/23/2023 更新时间:1/23/2023 访问量:39
委派给服务的操作的进度
The progress of the operation delegated to the service
问:
在 Symfony 中,我想创建一个命令,当调用该命令时,它将从服务运行该方法 - 所有操作都将在那里执行。 我希望用户能够看到操作的进度。
因此,从服务方法中,我需要从命令访问 ProgressBar。
在互联网上,我找到了一个解决方案,包括向将在进度条上运行的服务发送回调。 像这样的东西:
// service method
public function update(\Closure $callback = null)
{
$validCountryCodes = $this->countryRepository->findAll();
$products = $this->productRepository->findWithInvalidCountryCode($validCountryCodes);
foreach ($products as $product) {
if ($callback) {
$callback($product);
}
...
}
}
/**
* command file
*/
public function execute(InputInterface $input, OutputInterface $output)
{
$progress = new ProgressBar($output, 50);
$progress->start();
$callback = function ($product) use ($progress) {
$progress->advance();
};
$this->getContainer()->get('update.product.countries')->update($callback);
}
它有效,但问题是在服务中,操作被拆分为许多方法。 问题是如何使传递给更新方法的回调可用于servie中的所有方法?
我可以将它作为参数传递给我运行的每个方法,但这看起来不是很优雅......
提前感谢您的帮助。 问候
答: 暂无答案
评论