Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
nkostya 10.01.2010 13:18
Есть класс Model.@CLASS Model @auto[] $_model_cache[^hash::create[]] @load[id] ^if(!$_model_cache.$id){ $_model[^sql:table{...}] $self._model_cache.$id[$_model] } $self._data[$_model]Также есть 2 класса-потомка ModelA & ModelB:
@CLASS ModelA @USE Model.p @BASE Model @load[id] ^BASE:load[$id] $self._data.class_a(true)
@CLASS ModelB @USE Model.p @BASE Model @load[id] ^BASE:load[$id] $self._data.class_b(true)При таком раскладе получается, что метод @auto класса Model вызовется 3 раза: 1 при подключении Model, 2 при подключении ModelA и 3-ий раз при подключении ModelB. Соответственно хеш _model_cache будет обнулен. Т.е. метод вызывается лишние несколько раз, чего от метода auto никак не ожидалось. Если бы область видимости при вызове @auto базового класса была областью видимости текущего класса (что тоже не логично) то еще как-то можно было понять...