Раздел вопрос-ответ Можно ли в php задать массив в качестве константы?

Можно ли в php задать массив в качестве константы?

class A
{
    const CONST_NAME = array('x' => 'example');
}

У меня на php 5.4 возникает ошибка:

Fatal error: Arrays are not allowed in class constants

share

1 ответ

Начиная с версии 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

 

Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться
    НОВЫЕ ПОЛЬЗОВАТЕЛИ