Следующее действительно.
const BIT_c5 = 1 << 5;
Следующее недействительно.
$data_x =10;
$data_y = 20;
const DATA_Y = $data_x + $data_y;
Может кто-нибудь объяснить, почему?
Это есть в документация, что при определении константы она должна основываться на постоянная выражение, а не переменные и т. д.
Значение должно быть константным выражением, а не (например)
переменная, свойство или вызов функции.
Таким образом, вы можете определить константу и присвоить ей неизменное значение на основе литералов и выражений, включающих литералы. Но вы не можете использовать переменные (и / или выражения, включающие переменные), чтобы присвоить значение константе.
Других решений пока нет …