博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
symfony2 创建 命令
阅读量:6292 次
发布时间:2019-06-22

本文共 2191 字,大约阅读时间需要 7 分钟。

hot3.png

官方文档 :

如何创建一个命令;在你的bundle下面创建一个Commmand文件夹 再创建一个 以 Command.php为后缀的文件(eg:GreetCommand.php)

###官方例子

// src/AppBundle/Command/GreetCommand.php 文件位置namespace AppBundle\Command;use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;use Symfony\Component\Console\Input\InputArgument;use Symfony\Component\Console\Input\InputInterface;use Symfony\Component\Console\Input\InputOption;use Symfony\Component\Console\Output\OutputInterface;class GreetCommand extends ContainerAwareCommand{    protected function configure()    {        $this            ->setName('demo:greet')  #命令名称            ->setDescription('Greet someone')#描述            ->addArgument(  #参数                'name',                InputArgument::OPTIONAL,                'Who do you want to greet?'            )            ->addOption(                'yell', #选项                null,                InputOption::VALUE_NONE,                'If set, the task will yell in uppercase letters'            )        ;    }	//执行逻辑    protected function execute(InputInterface $input, OutputInterface $output)    {        $name = $input->getArgument('name');        if ($name) {            $text = 'Hello '.$name;        } else {            $text = 'Hello';        }        if ($input->getOption('yell')) {            $text = strtoupper($text);        }        $output->writeln($text);    }}

执行 php app/console demo:greet Fabie

在命令中使用 服务容器 获取服务

protected function execute(InputInterface $input, OutputInterface $output){    $name = $input->getArgument('name');    $logger = $this->getContainer()->get('logger'); //获取日志服务    $logger->info('Executing command for '.$name);    // ...}

需要注意的是不要去获取具有一定范围的容器(request)否则将会报错;

####使用翻译服务容器 protected function execute(InputInterface $input, OutputInterface $output) { $name = $input->getArgument('name'); $locale = $input->getArgument('locale');

$translator = $this->getContainer()->get('translator');    $translator->setLocale($locale); //必须要设置    if ($name) {        $output->writeln(            $translator->trans('Hello %name%!', array('%name%' => $name))        );    } else {        $output->writeln($translator->trans('Hello!'));    }}

转载于:https://my.oschina.net/u/729139/blog/374603

你可能感兴趣的文章
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>