用变量调用php命名空间

时间:2017-07-30 08:54:59

标签: php variables namespaces

我正在学习使用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

有人知道答案吗?谢谢!

1 个答案:

答案 0 :(得分:0)

使用constant关键字:

$name = constant("fruits\\$color\\redfruit");

你必须逃避斜线。 此名称也必须是完全限定的(相对于根命名空间)。