PHP - 如何在字符串中打印命名空间常量?

3
我有以下测试代码:

namespace Test {
    const ONE = 50;

    class A {
        const TWO = 5;

        public function pA($string) {
            return $string;
        }
    }

    $a = new A();
    print $a->pA($a::TWO);
    print "This is a string: {$a->pA($a::TWO)}";
    print "This is a namespace constant: " . ONE;
    print "This is a namespace constant: " . \Test\ONE;
}

所有这些示例都可以工作,但不是我要找的。

我能否使用字符串组合来表示常量,就像前两个示例中那样?我尝试了许多组合,例如"${\Test\B}""${B}""${\B}",但到目前为止没有成功。

也许这是不可能的,我在过度思考,但无论如何...有没有一种方法可以做到这一点?

1个回答

3

这样是行不通的。在双引号字符串中,您可以使用$变量、函数或对象方法调用,但不能使用常量。请参考PHP的字符串解析文档。这里有许多有用的示例。


我已经担心会得到这样的答案哈哈,但没关系。我只是想知道是否可能,现在我知道应该使用点符号表示法来组合字符串,而不是组合完整字符串。感谢您的回答 :) - Julio María Meca Hansen
1
是的,不幸的是这就是答案。然而,我目前看不出为什么花括号语法{\Test\ONE}不能工作。也许应该考虑向PHP开发团队提交更改请求。 - hek2mgl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接