控制台命令:找到该文件但该类不在其中,类名或命名空间可能有拼写错误。

时间:2014-06-06 08:01:07

标签: symfony symfony-2.3

首先,我尝试做的是学习使用文档创建自己的控制台命令 http://symfony.com/doc/current/cookbook/console/console_command.html

我想完全复制文档中的内容

这是我到目前为止所得到的

<?
// src/Gabriel/LiveLoginBundle/Command/GreetCommand.php
namespace Gabriel\LiveLoginBundle\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);
    }
}

但由于某种原因它会抛出此错误,它似乎无法找到类

  

找到了文件但该类不在其中,类名或   命名空间可能有拼写错误。

PS:已经尝试删除缓存

1 个答案:

答案 0 :(得分:0)

默认情况下,您的PHP配置(php.ini)不允许您使用短开始标记

<? ?>
<?= ?>

所以你必须在你的php.ini

中添加以下指令
short_open_tag=On

最好的办法是将短标记<?替换为<?php完整的{{1}}