php常量键值数组

时间:2013-04-10 05:18:44

标签: php

有没有办法用php

中提到的关键常量创建数组
class MysqlConstants
{
    const masterDb['HOST'] = "ip";
    const masterDb['user'] = "user";
}

3 个答案:

答案 0 :(得分:4)

不,这是不可能的;类常量必须是文字,而不是表达式。最接近的替代方法是静态属性:

class MySqlConstants
{
    public static $masterDb = array('HOST' => "ip", 'user' => "user");
}

我个人不喜欢这种方法,因为常量应该是不可变的。这将是一个更好的方法:

class MySqlConstants
{
    private static $masterDb = array('HOST' => "ip", 'user' => "user");

    public final static function getMasterDb()
    {
        return self::$masterDb;
    }
}

最后你可以分开常数:

class MySqlConstants
{
    const HOST = "ip";
    const user = "user";
}

顺便说一句,在代码中存储配置并不是我建议的,除非它们的应用程序常量;最好将连接设置等存储在ini文件中,并使用parse_ini_file()来检索它。

答案 1 :(得分:3)

您也可以序列化您的数组,然后将其放入常量:

# define constant, serialize array
define ("CRED", serialize (array ("host"=>"ip", "user"=>"user")));

# use it
$my_credential = unserialize (CRED);

答案 2 :(得分:0)

我建议在另一个名为config.php的php文件中使用define("MYSQL_HOST","ip");,这样您就可以轻松地使用MYSQL_HOST访问它而无需每次调用​​类的实例或global $masterDb使用它。

使用config.php的另一个好处是可以轻松修改常用的变量。