我正在建立一个网站,我包含一个名为" settings.php"的设置文件, 我认为通过名称注册全局变量看起来很酷:$ _SETTINGS 作为站点设置的数组(db_name,db_pass ....等) 如此:
<?php
$_SETTINGS = array();
$_SETTINGS['DB_HOSTNAME']= 'localhost';
$_SETTINGS['DB_NAME'] = 'db_test';
$_SETTINGS['DB_USERNAME'] = 'db_user';
$_SETTINGS['DB_PASSWORD'] = 'p422w0rd';
?>
然后通过访问$ _SETTINGS ...
访问子页面上的这些设置此代码工作得很好, 但是我很奇怪php程序员社区可以接受将你自己的变量命名为$ _吗? 或者我的代码被视为糟糕的设计?
感谢
答案 0 :(得分:1)
你可以这样做,但我不推荐它,因为superglobal变量也有这个模式/前缀,例如$_SERVER
,$_SESSION
,$_GET
,这可能会让人感到有些困惑。
但根据manual。技术上你可以做到:
有效变量名称以字母或下划线开始,跟随任意数量的字母,数字或下划线。作为正则表达式,它将表示为:'[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *'
最后,你的个人喜好是什么。
答案 1 :(得分:1)
我个人认为这是个坏主意。更好的解决方案是创建单例类,在整个应用程序中提供配置。
这样的事情:
class MyConfigProvider
{
private $config = array();
private static $instance = null;
public static function getInstance()
{
if (self::$instance === null)
self::$instance = new self();
return self::$instance;
}
private function __construct(){}
public function getConfig()
{
return $this->config;
}
public function setConfig(array $config)
{
$this->config = $config;
}
}
您可以通过
在应用中的所有位置进行配置$config = MyConfigProvier::getInstance()->getConfig();
它不是最佳解决方案,但它易于实施且有效