是否接受将$ _xxx命名为php varible?

时间:2015-04-09 21:21:52

标签: php variables naming-conventions

我正在建立一个网站,我包含一个名为" 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程序员社区可以接受将你自己的变量命名为$ _吗? 或者我的代码被视为糟糕的设计?

感谢

2 个答案:

答案 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();

它不是最佳解决方案,但它易于实施且有效