我正在学习使用php中的命名空间,我试图在调用常量时在命名空间名称中放置一个变量。 这是我的代码。
fruits2.php
<?php
namespace fruits\red;
const redfruit = 'tomato';
fruits1.php
<?php
namespace fruits;
require_once('fruits2.php');
const myconst = 'banana';
echo myconst; // displays banana
echo '<br>';
echo \fruits\red\redfruit; // displays tomato
echo '<br>';
$color = 'red';
echo \fruits\$color\redfruit; // Parse error: syntax error, unexpected '$color' (T_VARIABLE), expecting identifier (T_STRING)
我不明白如何在最后一行中调用常量。我试过以下但是它被认为是一个简单的字符串。
echo '\fruits\\'.$color.'\\redfruit';
我非常确定我应该能够做到这一点,因为在这段代码的另一部分调用类时,我可以做一些非常类似的事情:
$name = '\fruits\basket\\'.$color.'\\eat';
$c = new $name(); //this works
有人知道答案吗?谢谢!
答案 0 :(得分:0)
使用constant
关键字:
$name = constant("fruits\\$color\\redfruit");
你必须逃避斜线。 此名称也必须是完全限定的(相对于根命名空间)。