有什么办法来创建像在PHP下文提到的关键常量数组php常量键值阵列
class MysqlConstants
{
const masterDb['HOST'] = "ip";
const masterDb['user'] = "user";
}
有什么办法来创建像在PHP下文提到的关键常量数组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()
来检索它。
ist showing Parse错误:语法错误,意外'[' – 2013-04-10 06:00:55
@SheldonCooper修正,它只适用于5.4与'[]'符号:) – 2013-04-10 06:44:41
还可以序列的数组,然后把它放到常数:
# define constant, serialize array
define ("CRED", serialize (array ("host"=>"ip", "user"=>"user")));
# use it
$my_credential = unserialize (CRED);
这一定是迄今为止问题的最佳答案。但就实际实施而言,我同意杰克的观点。 – Sam 2013-04-10 05:55:03
我会建议在另一个名为php文件使用define("MYSQL_HOST","ip");
,可以说config.php文件,所以你可以很容易地访问它,而不每次你想使用它的时候调用class或global $masterDb
的实例。
有config.php的另一个好处是你可以很容易地修改常用的变量。
为什么不使用两个常量? – elclanrs 2013-04-10 05:22:40
看一看这个.. http://stackoverflow.com/questions/4236771/how-to-create-const-arrays-of-instances-of-a-class-within-that-class – 2013-04-10 05:25:04