在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文件中,并使用parse_ini_file()
检索它。
您也可以序列化您的数组,然后将其放入常量:
# define constant, serialize array
define ("CRED", serialize (array ("host"=>"ip", "user"=>"user")));
# use it
$my_credential = unserialize (CRED);
我建议在另一个php文件中使用define("MYSQL_HOST","ip");
,让我们说config.php,这样你就可以很容易地用MYSQL_HOST
访问它,而不必每次你想使用它时调用类或global $masterDb
的实例。