| Новости | 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 базового класса была областью видимости текущего класса (что тоже не логично) то еще как-то можно было понять...