问题描述
|
我对手册的阅读(在标题“字符串访问和按字符进行修改”之前的部分)是,您可以使用类常量和字符串中的{}做一些花哨的技巧,但您不能做简单的事情使此方法返回真相的事情:
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\')}.\";
显然,与仅使用字符串连接相比,这没有什么短或可读性更高。