如何正确地要求PHP文件

时间:2014-09-07 01:26:17

标签: php require

我在我的网站上使用2个主要PHP文件作为脚本。一个侧重于从MySQL数据库访问数据,另一个包含网站所需的功能。在某些函数中(在函数文件中),我需要从MySQL文件中调用函数。我不明白如何正确地要求文件,以便在必要时可以使用它们。

include 'scripts/MySQL.php';
include 'scripts/functions.php';

位于页面顶部的文件(我直接使用两个文件中的函数)。 然后,当我需要在functions.php中使用MySQL函数时,如果我不在MySQL.php文件的顶部需要functions.php,则MySQL函数为空,但如果我这样做,我收到此错误: Fatal error: Cannot redeclare getUserInfo() (previously declared in .../scripts/MySQL.php:2) in .../scripts/MySQL.php on line 16。这是getUserInfo(第2行是发布的第一行,第16行是最后一行):

function getUserInfo($steamID) {
    $link = mysqli_connect(constant('DB_SERVER'), constant('DB_USER'), constant('DB_PASS'), constant('DB_NAME'));

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = 'SELECT * FROM '.constant('membersTable').' WHERE steamID = '.$steamID;

    if($result = mysqli_query($link, $query)) {
        return mysqli_fetch_assoc($result);
    }
}

require如何真正处理文件间依赖关系?为什么我的代码行为如此奇怪/如何解决?

另外,如果我想从另一个文件访问变量,我是否必须在每个使用变量的函数中要求该文件,或者我可以在包含函数的文件顶部要求它(后者似乎不是工作)?

很抱歉,如果这个问题有点令人困惑。我真的想不出一个好方法来解决我的问题(特别是因为我不确定自己是否理解这个问题)。

2 个答案:

答案 0 :(得分:3)

使用include_oncerequire_once来避免重新声明您的功能

require_once 'scripts/MySQL.php';
require_once 'scripts/functions.php';
  

require_once语句与require相同,除了PHP   检查文件是否已被包含,如果是,则不包括   (要求)再次。

答案 1 :(得分:-2)