我面临一个奇怪的问题,包括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 "".
有什么想法吗?
答案 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();
。