通过 Symfony/Console 创建不同类型的类
Posted
技术标签:
【中文标题】通过 Symfony/Console 创建不同类型的类【英文标题】:Create different type of classes via Symfony/Console 【发布时间】:2019-10-07 04:24:00 【问题描述】:我在一个自定义 php 应用程序(不是 Symfony 应用程序,只是使用 Symfony 之外的组件)上设置了 Symfony 控制台,并在我的根目录下创建了一个 app
文件
#!/usr/bin/env php
<?php
// Include framework's dependencies through composer's autoload feature
require __DIR__ . '/vendor/autoload.php';
$application = new Symfony\Component\Console\Application();
// ... register commands
$application->add(new TestCommand());
$application->run();
这是我设置的测试类
<?php
namespace Mvc\Commands;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class TestCommand extends Command
/**
* The name of the command (the part after "bin/console")
*
* @var string
*/
protected $command_name = 'app:test';
/**
* The description of the command (the part after "bin/console")
*
* @var string
*/
protected $command_description = "Try to echo Hello World for testing if it works.";
protected function configure()
$this->setName($this->command_name)
->setDescription($this->command_description);
protected function execute(InputInterface $input, OutputInterface $output)
$name = $input->getArgument($this->command_argument_name);
如何创建命令来生成不同类型的类,例如 Laravel 如何生成控制器、模型等(php artisan make:controller TestController
等)?
【问题讨论】:
工匠代码以及 Symfony 制造商捆绑代码都是开源的,可在 github 上获得。通常,您将拥有一个控制器模板类,您可以在其中注入控制器特定的值。 这就是我想要做的,设置一些类模板并将它们拉入 *Commads 类,但是在 Symfony 的文档中没有找到任何关于如何做到这一点的文档symfony.com/doc/current/components/console.html 这不是 Symfony 文档的一部分。相反,您必须研究 Laravel 是如何做到这一点的,例如通过研究他们的commands, like ModelMakeCommands 或Symfony's MakerBundle 之一。您甚至可能希望在他们的基础上再接再厉。恐怕到目前为止,这个问题太模糊,无法有意义地回答。如果您在研究过程中遇到困难,请随时针对您遇到的问题提出更具体的问题。 @dbrumann 如果您愿意,可以将其写为答案,以便我接受 【参考方案1】:您必须使用composer require symfony/maker-bundle --dev
安装maker-bundle
在此之后,写php bin/console make
并按回车键以显示所有可用的命令。
【讨论】:
这是特定于 Symfony 的还是我也可以在 Symfony 之外使用它?我正在进行的项目是自定义项目,不基于任何已知框架以上是关于通过 Symfony/Console 创建不同类型的类的主要内容,如果未能解决你的问题,请参考以下文章