创建命令行

fastd 项目中存在另外一个强大而又实用工具: bin/console

  1. $ php bin/console

你应该看到一个命令列表,可以给你调试信息,帮助生成代码,生成数据库迁移等等。 当你安装更多的以来扩展时,你会看到更多的命令。

如果需要获取应用所有的路由列表,请使用 route 命令

  1. $ php bin/console route
  1. +---------------+--------+---------------------------------------+------------+
  2. | Path | Method | Callback | Middleware |
  3. +---------------+--------+---------------------------------------+------------+
  4. | / | GET | \Controller\WelcomeController@welcome | |
  5. | /hello/{name} | GET | \Controller\HelloController@hello | man |
  6. +---------------+--------+---------------------------------------+------------+

如果想要获取更多的命令参数,可以通过 —help-h 选项进行获取。

  1. $ php bin/console route -h
  1. Usage:
  2. route [options] [--] [<method>] [<path>]
  3. Arguments:
  4. method Route request method.
  5. path Route path.
  6. Options:
  7. -d, --data[=DATA] Path request data.
  8. -a, --all[=ALL] Test all routes
  9. -h, --help Display this help message
  10. -q, --quiet Do not output any message
  11. -V, --version Display this application version
  12. --ansi Force ANSI output
  13. --no-ansi Disable ANSI output
  14. -n, --no-interaction Do not ask any interactive question
  15. -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
  16. Help:
  17. Show all route

了解使用后,现在,我们来创建我们的命令行工具。

  1. <?php
  2. namespace Console;
  3. use Symfony\Component\Console\Command\Command;
  4. use Symfony\Component\Console\Input\InputArgument;
  5. use Symfony\Component\Console\Input\InputInterface;
  6. use Symfony\Component\Console\Output\OutputInterface;
  7. class HelloConsole extends Command
  8. {
  9. public function configure()
  10. {
  11. $this->setName('hello');
  12. $this->addArgument('name', InputArgument::OPTIONAL, '', 'jan');
  13. }
  14. public function execute(InputInterface $input, OutputInterface $output)
  15. {
  16. $output->writeln('hello '.$input->getArgument('name'));
  17. }
  18. }
  1. $ php bin/console hello jan
  2. // hello jan

由于我们功能实现引用了 Symfony/console

更多操作与使用可以通过官网文档进行查看: 点这里