gpt4 book ai didi

symfony - 在命令 symfony 3.4 上获取项目目录

转载 作者:行者123 更新时间:2023-12-03 22:55:25 26 4
gpt4 key购买 nike

使用 symfony 3.4
在 Controller 中,我可以使用此方法获取项目目录:

$this->get('kernel')->getProjectDir()

我想在命令 symfony (3.4) 上获取项目目录,最好的做法是什么?

谢谢

最佳答案

很确定这个问题已经被问过很多次了,但我懒得去搜索它。此外,Symfony 已经从从容器中提取参数/服务转向注入(inject)它们。所以我不确定以前的答案是否是最新的。

这很容易。

namespace AppBundle\Command;

use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Command\Command;

class ProjectDirCommand extends Command
{
protected static $defaultName = 'app:project-dir';

private $projectDir;

public function __construct($projectDir)
{
$this->projectDir = $projectDir;
parent::__construct();
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln('Project Dir ' . $this->projectDir);
}
}

因为你的项目目录是一个字符串,所以 autowire 不会知道要注入(inject)什么值。您可以将命令显式定义为服务并手动注入(inject)值,也可以使用绑定(bind)功能:
# services.yml or services.yaml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
bind:
$projectDir: '%kernel.project_dir%' # matches on constructor argument name

关于symfony - 在命令 symfony 3.4 上获取项目目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com