在Symfony中使用命名空间时出现未定义的常量错误

时间:2017-05-10 17:29:15

标签: php namespaces constants

PHP 5.6 Symfony 3

我的包中有一个文件,其中包含一个带有已定义常量的命名空间......

constfile.php

<?php
namespace Some\Interesting\ConstFile {
    const NAME_OF_CONSTANT = 'Some Constant';
}
namespace Some\Interesting\ConstFile\Specific {
    const NAME_OF_SPECIFIC_CONSTANT = 'Some Specific Constant';
}

然后我在另一个包中有另一个文件,我试图使用常量......

stuff.php

<?php
namespace More\Cool\Stuff;

use Some\Interesting\ConstFile as CF;
use Some\Interesting\ConstFile\Specific as CFS;

class Stuff {
    public function doit() {    
        $output->writeln(CF\NAME_OF_CONSTANT);
        $output->writeln(CFS\NAME_OF_SPECIFIC_CONSTANT);
    }
}

PHPStorm对此设置没有任何投诉。但是,当我运行此操作时,我收到了一个致命错误:stuff.php中的未定义常量NAME_OF_CONSTANT&#39;错误。

2 个答案:

答案 0 :(得分:2)

尝试加载此类文件时自动加载效果不佳,请尝试手动包含原始文件。

require 'path/to/constfile.php'

答案 1 :(得分:1)

当您使用反斜杠错误地为命名空间添加前缀时,也会发生此错误。 使用 语句的前缀可以是 \ 名称空间 不能。 命名空间中的主要反斜杠导致php将整行理解为常量。