包含PHP文件的位置会影响全局变量范围

时间:2015-02-04 16:29:27

标签: php xampp global

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


/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时,没有任何内容打印出来。有人可以解释一下这种行为吗?

BTW:我正在使用XAMPP 5.5.19和PHP 5.5

1 个答案:

答案 0 :(得分:2)

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

另外,为什么global $database声明,如果你要打电话给getDatabase()呢?