| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
virusav 20.09 12:02
Структура модулей:user: api_method/UserLoginApiMethod.p api_method/UserRegisterApiMethod.p config/UserConfig.p controller/UserController.p user_copy: api_method/UserCopyRegisterApiMethod.p config/UserCopyConfig.p - наследуется от UserConfig.p user_1: config/UserCloneConfig.p - наследуется от UserCopyConfig controller/UserCloneController.pВ каждом модуле в конфиге есть:
@GET_sModule[] $result[user/user_copy/user_clone]Результат для модуля user_clone:
controller - /../base/module/user_1/config/../controller/UserCloneController.p api_method.Register - /../base/module/user_copy/config/../api_method/UserCopyRegisterApiMethod.p api_method.Login - /../base/module/user/config/../api_method/UserLoginApiMethod.pРезультат для модуля user_copy:
controller - /../base/module/user/config/../controller/UserController.p api_method.Register - /../base/module/user_copy/config/../api_method/UserCopyRegisterApiMethod.p api_method.Login - /../base/module/user/config/../api_method/UserLoginApiMethod.pРезультат для модуля user:
controller - /../base/module/user/config/../controller/UserController.p api_method.Register - /../base/module/user/config/../api_method/UserRegisterApiMethod.p api_method.Login - /../base/module/user/config/../api_method/UserLoginApiMethod.pКод:
@auto[sFilePath;sClassName]
$sCurrentDir[^file:dirname[$sFilePath]]
$sCurrentDir[^sCurrentDir.mid(^request:document-root.length[])]
^if($self.hCURRENT_DIR is void){
$self.hCURRENT_DIR[^hash::create[]]
}
$self.hCURRENT_DIR.[$sClassName][
$.iIndex(^self.hCURRENT_DIR._count[])
$.sCurrentDir[$sCurrentDir]
$.sFileName[^file:basename[$sFilePath]]
]
@getModulePartClassPath[sPartType;sPartName]
$iCount(^self.hCURRENT_DIR._count[])
$oClass[$self]
^for[iCounter](0;$self.hCURRENT_DIR.[$self.CLASS_NAME].iIndex){
$iIndex($iCount-$iCounter-1)
$hData[^self.hCURRENT_DIR._at($iIndex)]
^if($iCounter>0){
$oClass[^BaseClassLib:getClass[
$.sClassPath[$hData.sCurrentDir/$hData.sFileName]
]]
}
$sPath[$hData.sCurrentDir/../$sPartType/^BaseStringLib:getStudlyCase[${oClass.sModule}_${sPartName}_$sPartType].p]
^if(-f $sPath){
^return[$sPath]
^break[]
}
}
$result[]Не знаю, насколько оправдан такой подход, но при наличии в модуле (компоненте) разных видов классов (контроллеры, методы, модели и т.д. наследование можно будет свести к минимуму с заменой только нужных классов.