【发布时间】:2014-09-07 01:26:16
【问题描述】:
我在我的网站上使用 2 个主要的 PHP 文件作为脚本。一种专注于从 MySQL 数据库访问数据,另一种则包含网站所需的功能。在某些函数中(在函数文件中),我需要从我的 MySQL 文件中调用函数。我不明白如何正确地要求这些文件,以便在需要时可以使用它们。
include 'scripts/MySQL.php';
include 'scripts/functions.php';
位于页面文件的顶部(我直接使用两个文件中的函数)。
然后当我需要在functions.php 中使用MySQL 函数时,如果我不需要functions.php 文件顶部的MySQL.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 如何真正处理文件间依赖关系?为什么我的代码表现得如此奇怪/我该如何解决?
另外,如果我想从另一个文件访问变量,我是否必须在每个使用变量的函数中都需要该文件,或者我可以在包含函数的文件顶部需要它(后者似乎没有工作)?
对不起,如果这个问题读起来有点混乱。我真的想不出一个好的方法来表达我的问题(尤其是因为我不确定我自己是否理解这个问题)。
【问题讨论】:
-
您是否也包含来自任何其他文件的文件?您似乎不止一次地包含文件。你能提供你的完整代码吗?
-
您包含 Mysql.php 两次,因为 functions.php 需要访问它,但这会产生致命错误。 FuzzyTree
require_once发布的答案应该可以解决这个问题 -
跟着 PSR-0 走就安全了。