PHP包含文件包含文件奇怪的问题!

时间:2011-04-11 00:16:24

标签: php variables include nested visibility

我面临一个奇怪的问题,包括php文件。我来告诉你代码:

// constants.php
$MYSQL_HOST_PORT = 'localhost:3306';

// functions.php
include 'constants.php';
function getVar()  {
    echo $MYSQL_HOST_PORT;
}

// doSth.php
include 'functions.php';
echo $MYSQL_HOST_PORT; // The variable is visible and echoed normally as expected!
echo getVar(); // The variable is not echoed! its "".

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

首先,echo中的echo getVar();将不会打印任何内容,因为getVar不会返回值。

其次,如果您(出于某种原因)希望getVar()本身正常工作,则需要添加global $MYSQL_HOST_PORT;行,以使其在全局范围内查找$MYSQL_HOST_PORT

答案 1 :(得分:1)

为什么不简单地将它变成常量呢?

而不是全局化$MYSQL_HOST_PORT变量
// constants.php
define('MYSQL_HOST_PORT', 'localhost:3306');

如果包含constants.php,您可以在任何地方引用MYSQL_HOST_PORT常量。

zerocrate's answer所述,问题是范围问题。 getVar()函数的封闭范围不包括$MYSQL_HOST_PORT

答案 2 :(得分:-1)

我可以看到错误的一点是,使用行echo getVar();,您无法从函数中获取返回值,因此您只需单独编写getVar();