这不是该Passing a variable from one php include file to another: global vs. not
的重复项我正在尝试制作一个简单的php项目,其中有用于数据库连接(config.php),数据库函数(db_functions.php),常规函数(functions.php)和索引文件(index.php)的其他文件。
我在config.php中设置了数据库连接-
$link = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die(mysqli_error());
此连接正常工作(在index.php上测试)。 DB_HOST和其他常量在config.php文件中声明。现在,我将我的php文件连接成这样-
functions.php是index.php中必需的(使用require)
function.php中需要db_functions.php(使用require)
config.php是必需的(使用require)
现在,如果我想在db_functions.php中使用$link
变量,它将无法正常工作。显示通知Undefined variable: link in db_functions.php on line 10
。
我正在db_functions.php上的函数中调用$link
,在db_functions.php上一次声明global $link
也不起作用。我必须在db_functions.php的每个函数中声明global $link
。这很烦人,有什么方法可以避免多次使用?还是在不声明全局的情况下解决问题?
预先感谢
答案 0 :(得分:2)
您将需要使用global
或使用一些超级全局变量来存储和访问。没有办法。在这两种情况下,您最终都会编写额外的一段代码。
答案 1 :(得分:0)
蒂姆说的是正确的,另一种没有实现OOP的方法是使用超全局$GLOBAL
例如
$GLOBALS['link']
参考:https://www.php.net/manual/en/reserved.variables.globals.php