有什麼辦法來創建像在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