parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

bug: Parser 3.4.5+ OPTIONS:dynamic

nkostya 24.05.2020 17:12 / 24.05.2020 17:12

Если объявить в классе OPTIONS:dynamic и попытаться из класса обратиться к несуществующей переменной - всегда ошибка.


Обойти задание GET_DEFAULT не получается, т.к. есть только static или dynamic.Т.е. переопределить OPTIONS класса обратно невозможно. Никаких any.
Создать 2 метода static & dynamic - тоже.

Как быть:

Проверено в 3.4.5 и 3.4.6b

Пример:
@CLASS
Model

@OPTIONS
locals
partial
dynamic

@GET_DEFAULT[sName][result]
	some...
#end @GET_DEFAULT[]

@create[hData]
$self._data[$hData]

@static:GET_ALL[]
$self._all[sadasd]
Попытаемся выполнить:
$Model:ALL
получаем exception
GET_DEFAULT
method of 'Model' is not allowed to be called statically
Обойти можно только сложными reflection:field, но только это очень не удобно.

Это баг, фича?

Вариант с 2 методами static или dynamic возможно?

Если даже будет any, то внутри можно проверять логику через ^reflection:dynamical[]
Хотя не думаю что это будет оптимально с точки зрения производительности.