Symfony的Console组件的简单使用。
本文目的是多Symfony的Console组件进行简单的使用。
达到这样的效果:
-
输入
php console test
-
输出
hello console.
准备工作
我们这里使用composer来进行Console组件的安装 composer安装教程
-
进入项目路径:
cd ~/web/project/
-
安装Console组件:
composer require symfony/console @stable
-
创建自己的代码目录:
mkdir -p src/Mycmd # 创建自己的代码目录
-
注册命名空间:
编辑composer.json
文件如下,然后在命令行输入composer dump-autoload
:{ "require": { "symfony/console": "@stable" }, "autoload": { "psr-4":{ "Mycmd\\": "src/Mycmd" } } }
编写命令文件
-
创建要执行的命令文件:
在src/Mycmd
路径下创建TestCmd.php
文件,并写入:<?php namespace Mycmd; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * */ class TestCmd extends Command { public function __construct($msg) { $this->msg = $msg; parent::__construct(); } protected function configure() { $this->setName('test'); } protected function execute(InputInterface $input, OutputInterface $output) { $output->writeln("<comment>".$this->msg."</comment>"); } }
-
在项目根目录下,创建Console组件的入口文件
console
并写入:#!/usr/bin/env php <?php require __DIR__.'/vendor/autoload.php'; use Mycmd\TestCmd; use Symfony\Component\Console\Application; $application = new Application(); $application->add(new TestCmd("hello console")); $application->run();
使用Console组件
在命令行中输入:
php console test
这时会看见
hello console
代码分析
首先说说我们自己的命令文件: TestCmd.php
<?php
namespace Mycmd;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
/**
*
*/
class TestCmd extends Command
{
public function __construct($msg)
{
$this->msg = $msg;
parent::__construct();
}
protected function configure()
{
$this->setName('test');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln("<comment>".$this->msg."</comment>");
}
}
代码中包含一个类 TestCmd
并继承了 Command
基类。
configure
方法中设置了命令的名称 test
,即 php console test
命令中的最后一个单词
execute
方法中定义了该命令的执行过程,即输出 $this->msg
再看看入口文件 console
#!/usr/bin/env php
<?php
require __DIR__.'/vendor/autoload.php';
use Mycmd\TestCmd;
use Symfony\Component\Console\Application;
$application = new Application();
$application->add(new TestCmd("hello console"));
$application->run();
这里的 $application->add()
方法将我们定义的 TestCmd
添加到了命令行中。
Symfony官方文档:
http://symfony.com/doc/current/components/console/introduction.html
日期 2016-5
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。