我有一堆数据库地址和其他随机的长字符串,我必须在我的站点上一遍又一遍地输入到函数中。有没有办法在PHP中创建一大堆永久的全局变量,这些变量对当前PHP安装中的任何文件都有效?
或者我应该只创建一个定义了所有变量的vars.php,并始终包含该文件?
发布于 2011-05-03 23:14:33
使用所需的设置创建文件。如下所示:
<?php
// My file name might be config.php
$config = array(
'db.connection' => 'localhost:3306'
// etc...
);
?>
然后将其包含到每个需要它的页面/文件中。
<?php
require("path-to/config.php");
// Other stuff this file does/needs
?>
发布于 2011-05-03 23:08:48
答案是,好吧,两者都有!使用前缀。
http://www.electrictoolbox.com/php-automatically-append-prepend/
发布于 2011-05-03 23:47:59
你可以使用$GLOBALS变量,它也包含其他的超全局变量,如$_GET,$_POST等等。当然,这意味着你仍然应该包含你定义自己的自定义变量的文件。
使用$GLOBALS时的好处是,您可以在所有范围内使用它,至少可以将它用作一种名称空间技术。
例如,如果您使用
$settings = array('host' => 'localhost');
function connect() {
global $settings;
}
在某些情况下,您可能无意中覆盖了$setting变量。在使用$GLOBALS时,我认为这种情况不太可能发生。
$GLOBALS['_SETTINGS'] = array(... => ...);
function connect() {
$settings = $GLOBALS['_SETTINGS'];
}
另一种解决方案是使用您自己的自定义类,将设置存储在静态数组中。同样,这需要包含文件,您可以在其中定义类,但您的数据将在所有范围内可用,并且不能被严格覆盖。
示例:
class MySettings {
private static $settings = array(
'host' => 'localhost',
'user' => 'root'
);
public static get($key) {
return self::$settings[$key];
}
}
function connect() {
$host = MySettings::get('host');
...
}
不是说这是最好的方法,但肯定是实现目标的一种方法。
https://stackoverflow.com/questions/5876735
复制