PHP include file包含一个文件奇怪的问题!

发布于 2024-10-31 05:43:44 字数 402 浏览 3 评论 0原文

我面临一个奇怪的问题,包括 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 "".

有什么想法吗?

I face a strange problem including php files. Let me show you the code:

// 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 "".

Any ideas ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烟酉 2024-11-07 05:43:44

其一,echo getVar(); 中的 echo 永远不会打印任何内容,因为 getVar 不返回值。

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

For one, the echo in echo getVar(); won't ever print anything, because getVar doesn't return a value.

Secondly, if you (for some reason) want getVar() itself to work correctly, you need to add a global $MYSQL_HOST_PORT; line, to make it look for $MYSQL_HOST_PORT in the global scope.

我喜欢麦丽素 2024-11-07 05:43:44

与其全局化 $MYSQL_HOST_PORT 变量,为什么不简单地将其设为常量呢?

// constants.php
define('MYSQL_HOST_PORT', 'localhost:3306');

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

正如 zerocrate 的回答中所示,这个问题是一个范围界定问题。 getVar() 函数的封闭范围不包括 $MYSQL_HOST_PORT

Rather than globalising the $MYSQL_HOST_PORT variable, why not simply make it a constant?

// constants.php
define('MYSQL_HOST_PORT', 'localhost:3306');

Provided constants.php is included, you can reference the MYSQL_HOST_PORT constant anywhere.

As indicated in zerocrate's answer, the issue is a scoping one. The enclosed scope of the getVar() function does not include $MYSQL_HOST_PORT.

可爱暴击 2024-11-07 05:43:44

我发现错误的一件事是,使用 echo getVar(); 行,您没有从函数中获得返回值,因此您可以简单地编写 getVar();靠它自己。

One thing that I can see wrong is that with the line echo getVar(); you are not getting a return value from the function so you can simply write getVar(); by itself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文