PHP中字符串中的类常量

问题描述

| 我对手册的阅读(在标题“字符串访问和按字符进行修改”之前的部分)是,您可以使用类常量和字符串中的{}做一些花哨的技巧,但您不能做简单的事情使此方法返回真相的事情:
class c {
    const k = \'12\';
    public function s() {
        return \"Twelve in decimal is {c::k}.\";
    }
}
这里是连接的正确解决方案吗?     

解决方法

           这里是连接的正确解决方案吗? 是。扩展的卷曲语法不支持它。 或者,您可以将常量列表导出到数组中并使用它(或将常量导出到单个标量变量名称),但这并不是IMO的好解决方案。 请注意,常量是可用的,因为您可以这样做:
const k = \'foo\';
$foo = \'bar\';
echo \"{${c::k}}\"
给你2英镑,但这不是你想要的。     ,        这有点神秘,但是手册中对此有一个注释。   自PHP 5起,{$}中的函数,方法调用,静态类变量和类常量就可以使用。但是,所访问的值将被解释为定义字符串的作用域中的变量名。使用单花括号({})不能访问函数或方法的返回值或类常量或静态类变量的值。 最后一句话告诉您它不起作用,是的,连接是到达此处的方法。 (已修改)以上段落的示例:
<?php
class beers {
    const softdrink = \'rootbeer\';
}

$rootbeer = \'A & W\';

// This works; outputs: I\'d like an A & W
echo \"I\'d like an {${beers::softdrink}}\\n\";

// This won\'t work; outputs: I\'d like an {beers::softdrink}
echo \"I\'d like an {beers::softdrink}\\n\";
    ,        卷曲语法仅适用于“变量表达式”。您需要need4 anything可以存取的所有物品。 哦,只有解决方法:
    $c = \"constant\";
    return \"Twelve in decimal is {$c(\'c::k\')}.\";
显然,与仅使用字符串连接相比,这没有什么短或可读性更高。