【问题标题】:Location of Including PHP File Affects Global Variable Scope包含 PHP 文件的位置影响全局变量范围
【发布时间】:2015-02-04 16:29:27
【问题描述】:

似乎我的包含文件的位置会影响包含文件内的全局变量。情况很复杂。见下文:


/config.php

<?php
    $domain = 'localhost';
    $database = 'db';
?>

/functions.php

<?php
    require_once("config.php");

    function getDatabase() {
        global $database;

        return $database;
    }
?>

/endpoint.php

<?php
    require_once($_SERVER['DOCUMENT_ROOT']."/functions.php");

    print(getDatabase());
?>

/api/endpoint.php

<?php
    require_once($_SERVER['DOCUMENT_ROOT']."/functions.php");

    print(getDatabase());
?>

当我导航到/endpoint.php 时,会打印出db。当我导航到/api/endpoint.php 时,没有打印任何内容。有人可以解释一下这种行为吗?

顺便说一句:我正在使用 XAMPP 5.5.19 和 PHP 5.5

【问题讨论】:

    标签: php xampp global


    【解决方案1】:

    这是因为在第二种情况下,functions.php 希望将 config.php 包含在当前路径 /api/ 中。

    另外,如果你要调用getDatabase(),为什么还要声明global $database

    【讨论】:

    • 在我的实际代码中更复杂,但我能够将其简化为。
    • 是的,有效。那么,如果找不到 config.php,为什么 require_once 不会在 functions.php 中失败?
    • @MageWind 你在/api 目录中有config.php 文件吗?
    • 不,我没有(填充文本)
    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多