Есть ли способ предотвратить изменение значения переменной, если оно имеет значение в php v5.6, и по-прежнему использовать его в выражении HereDo c? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть функция (в стороне от класса, если это имеет значение), в которой я хочу объявить несколько локальных констант, то есть:

function myFunc() {
  const   CONST1  = 1;   // Not allowed by the compiler!
  define( 'CONST2', 2 ); // Allowed, but it is a global constant -- is this constant visible outside
                         // this function?  If it is only locally 'seen', then what does it mean to
                         // be in the global namespace?

В последствии, в этой же функции я Я хочу использовать константы в строках HereDo c с использованием подстановок '{' и '}', но это не поддерживается для констант или вызовов функций, поэтому я не могу использовать константу CONST2 в выражении HereDo c, если только Сначала я присваиваю значение константы переменной, а затем использую эту переменную в HereDo c.

или

Используйте переменную stati c вместо функции define.

В моем коде я в конечном итоге использовал переменные stati c, чтобы не пришлось заново присваивать значения переменным stati c в каждом вызове myFun c после первого вызова этой функции, но это не препятствует последующему изменению их значений.

Имеет ли php директиву компилятора / среды выполнения, функцию или какой-либо способ явной блокировки или создания переменной только для чтения после того, как она имеет был дан en значение?

Я думаю, что я мог бы изменить эти константы на свойства в классе и использовать функцию setter, чтобы предотвратить переназначение значения после того, как свойство больше не является неопределенным, но это кажется излишним для того, что похоже на то, что должно быть просто.

Очень плохо, HereDocs не поддерживает вызовы функций, потому что я мог бы использовать функции define () и constant (), чтобы сделать все это очень легко.

Спасибо

...