php - 无法从不同的php文件传递变量
问题描述
这与将变量从一个 php 包含文件传递到另一个文件不同:全局与非
我正在尝试制作一个简单的 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 文件像这样连接 -
在 index.php 中需要 functions.php(使用 require)
在functions.php中需要db_functions.php(使用require)
db_functions.php 中需要 config.php(使用 require)
现在,如果我想使用$link
db_functions.php 中的变量,它不起作用。显示一个通知Undefined variable: link in db_functions.php on line 10
。
我在 db_functions.php 上调用$link
函数在 db_functions.php 上声明global $link
一次也不起作用。我必须global $link
在 db_functions.php 上的每个函数中声明。这很烦人,有什么办法可以避免多次使用它?或者在没有声明全局的情况下解决问题?
提前致谢
解决方案
蒂姆说的是正确的,另一种不实现 OOP 的方法是使用超全局$GLOBAL
前任。
$GLOBALS['link']
参考:https ://www.php.net/manual/en/reserved.variables.globals.php
推荐阅读
- angular - 找不到模块:错误:无法解析“angular2-router-loader”
- ansible - 如何从用_items制作的循环中使用检查ansible任务结果?
- visual-studio - VS2017 不包含 Microsoft.Bcl.Build,而 VS2015 包含
- regex - 如果不在markdown代码块内,javascript正则表达式匹配char
- php - 使用 PHP 验证部分 URL
- youtube-api - 你能从 YouTube Live Streaming API 派生一个 Hangout On Air 加入 URL 吗?
- hbase - HBase 压缩如何影响客户端?
- azure - 如何将存储在 azure 存储帐户中的 csv 文件读入 azure psql
- c++ - 在 C++ 中检测带有零除异常的调试器
- java - done() 函数返回 null ParseObject