Можно ли в php задать массив в качестве константы?
class A
{
const CONST_NAME = array('x' => 'example');
}
У меня на php 5.4 возникает ошибка:
Fatal error: Arrays are not allowed in class constants
|
Можно ли в php задать массив в качестве константы?
class A
{
const CONST_NAME = array('x' => 'example');
}
У меня на php 5.4 возникает ошибка:
|
||||
|
|
|
Начиная с версии php 5.6 можно задать массив в качестве константы. В версии 5.6+ в константах стали доступны выражения. Константа может быть представлены выражением скалярного типа (целое или дробное число, строка), а также в виде массива, который относится к смешанным нескалярным типам данных. Читать подробнее о нововведениях php 5.6. Примеры объявления констант, которые будут работать в php 5.6+, но будут вызывать фатальную ошибку в более ранних версиях:
class A {
const C1 = 60*60*24;
const C2 = self::C1 * 2;
const C3 = array();
const C4 = array('значение1', 'значение2');
}
Примеры с вызовами констант:
const ONE = 1;
class B {
const FIVE = ONE + 4;
const SENTENCE = 'Значение FIVE = ' . self::FIVE;
public function f($a = ONE + self::FIVE) {
return $a;
}
}
echo (new B)->f()."\n";
echo B::SENTENCE;
// результат будет таким:
6
Значение FIVE = 5
|
||||
|
|