php常量键值数组

php常量键值数组,php,Php,有没有办法用php中下面提到的键常量创建数组 class MysqlConstants { const masterDb['HOST'] = "ip"; const masterDb['user'] = "user"; } 不,这是不可能的;类常量必须是文字,而不是表达式。最接近的替代方案是静态属性: class MySqlConstants { public static $masterDb = array('HOST' => "ip", 'user' =>

有没有办法用php中下面提到的键常量创建数组

class MysqlConstants
{
    const masterDb['HOST'] = "ip";
    const masterDb['user'] = "user";
}

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

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文件中,并使用来检索它。

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

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文件中,并使用来检索它。

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

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

# use it
$my_credential = unserialize (CRED);

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

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

# use it
$my_credential = unserialize (CRED);
我建议使用defineMYSQL_主机,ip;在另一个名为config.php的php文件中,让我们假设config.php,这样您就可以轻松地使用MYSQL_主机访问它,而无需每次使用时都调用class或global$masterDb的实例

使用config.php的另一个优点是,您可以轻松修改常用变量。

我建议使用defineMYSQL\u主机,ip;在另一个名为config.php的php文件中,让我们假设config.php,这样您就可以轻松地使用MYSQL_主机访问它,而无需每次使用时都调用class或global$masterDb的实例


使用config.php的另一个优点是,您可以轻松地修改常用变量。

为什么不使用两个常量呢?看看这个。。为什么不使用两个常量呢?看看这个。。这肯定是迄今为止对这个问题的最佳答案。但就现实的实现而言,我同意杰克的观点。这一定是迄今为止对这个问题的最佳答案。但就实际实现而言,我同意Jack.ist显示解析错误:语法错误,意外的'['@SheldonCooper已修复,它仅适用于带有[]符号的5.4版本:ist显示解析错误:语法错误,意外的'['@SheldonCooper已修复,它仅适用于带有[]符号的5.4版本: