Есть ли способ, чтобы создать массив ключевых констант, как указано ниже в PHPPHP Constant значение ключа массива
class MysqlConstants
{
const masterDb['HOST'] = "ip";
const masterDb['user'] = "user";
}
Есть ли способ, чтобы создать массив ключевых констант, как указано ниже в PHPPHP Constant значение ключа массива
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 show Parse error: синтаксическая ошибка, неожиданная '[' –
@SheldonCooper Исправлена ошибка, она работала только на 5.4 с символом '[]' –
Вы также можете сериализовать массив, а затем поместить его в константу:
# define constant, serialize array
define ("CRED", serialize (array ("host"=>"ip", "user"=>"user")));
# use it
$my_credential = unserialize (CRED);
. Это должен быть лучший ответ на этот вопрос. Но что касается реалистической реализации, я согласен с Джеком. – Sam
Я предложил бы использовать define("MYSQL_HOST","ip");
в другом файле PHP называется, позволяет сказать, что config.php, так что вы можете легко получить доступ к нему с MYSQL_HOST
без вызывающие экземпляры класса или global $masterDb
каждый раз, когда вы хотите его использовать.
Еще одно преимущество наличия config.php заключается в том, что вы можете легко изменять общие используемые переменные.
Почему бы вам не использовать две константы? – elclanrs
Посмотрите на этот .. http://stackoverflow.com/questions/4236771/how-to-create-const-arrays-of-instances-of-a-class-within-that-class –