我正在尝试弄清楚在php中使用<<<HTML
时如何使用已定义的变量。
这是我想要实现的一个例子:
<?php
define('TEST','This is a test');
echo <<<HTML
Defined: {TEST}
HTML;
?>
在<<<HTML
?
编辑:
我做了一个小测试来检查哪种方法最快。
对于我的测试,我在heredoc中使用了20个变量。以下是不同方法(以秒为单位)发生的事情:
Accessing defined variable inside <<<HTML in php似乎是最慢的方式 - 0.00216103
Accessing defined variable inside <<<HTML in php更快 - 0.00073290
Accessing defined variable inside <<<HTML in php更快 - 0.00052595
Accessing defined variable inside <<<HTML in php是最快的 - 0.00011110。
希望这有助于其他人:)
答案 0 :(得分:11)
我不害怕,但是......
define('TEST','This is a test');
var $defined = TEST;
echo <<<HTML
Defined: {$defined}
HTML;
至少我知道一种直接在该上下文中使用定义值的方法,你需要使用一个变量。
答案 1 :(得分:5)
这是我在php手册的注释中找到的方法:http://www.php.net/manual/en/function.define.php#100449
这有点令人费解,但应该有效。
<?php
define('TEST','This is a test');
$cst = 'cst';
function cst($constant){
return $constant;
}
echo <<<HTML
Defined: {$cst(TEST)}
HTML;
如果要包含多个已定义的CONSTANTS,这比手动将大量变量分配给常量值更好。
答案 2 :(得分:4)
您可以创建一个类似于常量访问器的类:
class DefineAccessor {
function __get($name) {
if (defined($name))
return eval('return ' . $name . ';');
}
}
创建一个实例,以便能够在heredoc中使用它:
$defines = new DefineAccessor;
然后像这样使用它:
echo <<<HTML
Defined: $defines->TEST
HTML;
答案 3 :(得分:3)
你做不到。将其值分配给实变量。
答案 4 :(得分:3)