1

有什么方法可以使用下面在 php 中提到的键常量创建数组

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

3 回答 3

5

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

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()检索它。

于 2013-04-10T05:21:10.860 回答
3

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

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

# use it
$my_credential = unserialize (CRED);
于 2013-04-10T05:25:34.223 回答
0

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

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

于 2013-04-10T05:26:07.597 回答