| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Sumo 03.10.2020 11:09 / 03.10.2020 11:12
Для этого прекрасно подходит шаблон проектирования «стратегия». Выносите специфическое поведение в отдельный класс и параметризируете им основной класс через конструктор.@main[][locals]
$actions[
$.get_data[DataAction]
$._default[DefaultAction]
]
$options[
$.sql[...]
]
$handler[^Handler::create[
^reflection::create[$actions.[$form:action];create;$options]
]
^handler.run[]
@CLASS
Handler
@OPTIONS
locals
@create[aAction]
$self._action[$aAction]
@run[]
^self._action.process[$form:fields]
@CLASS
DefaultAction
@create[aOptions]
@process[aForm]
Default page
@CLASS
DataAction
@OPTIONS
locals
@create[aOptions]
$self._sql[$aOptions.sql]
@process[aForm]
$lData[^self._sql.table{
select * from data where id = ^aForm.id.int(-1)
}]
^if($lData){
$lData.text
}{
Data not found
}p.s. Очень надеюсь, что вы пользуетесь исключительно динамическими объектами, а не статическими классами в своем коде. В статических классах вам недоступно большинство ООП-приемов. :)