无法打开输入文件:application.php Symfony CLI

时间:2015-11-16 21:19:47

标签: php symfony command-line-interface

我想在Symfony中创建一个基本命令

所以我跟着Symfony中的食谱。

但它说的是通过运行以下

来测试新的控制台命令
$ php application.php demo:greet Fabien

我总是得到一个错误,说 -

  

无法打开输入文件:application.php

我创建了**GreetCommand.php**文件并复制了那些确切的php命令。并创建一个 application.php 文件,我按照说明操作。

我把这两个文件放在同一个目录/文件夹中。

我做错了什么以及为什么我会收到这个错误。

以下是**GreetCommand.php** ---

的代码
<?php

namespace AppBundle\Command;

use Symfony\Component\Console\Command\Command;
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 Command
{
    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);
    }
}

这是 application.php ---

的代码
#!/usr/bin/env php
<?php
// application.php

require __DIR__.'/vendor/autoload.php';

use AppBundle\Command\GreetCommand;
use Symfony\Component\Console\Application;

$application = new Application();
$application->add(new GreetCommand());
$application->run();

1 个答案:

答案 0 :(得分:1)

您收到的错误表明application.php的路径无效。通过在不存在的文件上调用PHP可以重现相同的错误:

$ php doesnotexist.php

输出:

  

无法打开输入文件:doesnotexist.php

linked to引用的文档是指Symfony的控制台组件,但根据您的代码段,您似乎正在使用整个Symfony 框架。区别很重要,因为期望组件独立于框架的其余部分起作用,这意味着在使用框架的其余部分时,实现可能略有不同。

我怀疑这本食谱文章会更有帮助:How to Create a Console Command