Delegateã£ãŠãPreloadã§ç»é²ããŸããã©ãå®éã«Callãããã®ã¯
ã©ã®ã¿ã€ãã³ã°ãã£ãŠåããã«ããã§ãããã»ã»ã»ã
PreBlockFilterã§ç»é²ããã®ã«ãPostFilterã§ç»é²ããDelegateãã
åŸã§å®è¡ãããã®ã¯äœæ
ã»ã»ã»ãšå°äžæéæ©ãã ãããŠããŸããŸããã
ãã®èŸºãDelegateNameãã©ã®é çªã§Callãããã®ãããããªãããªãŒãš
core/XCube_Delegate.class.php
ã«ã¡ããã¡ãããšããã°ããªã³ããå
¥ããŠã¿ãã®ã§ããã
XCube_Delegate::call()
ã§æ念ããŠããŸãã»ã»ã»ã
äŒè€
ããªã²ãŒãã¯ãããŠãã«èšãã°è€æ°ã®é¢æ°ãã€ã³ã¿ãæºããŠãã«ããã£ã¹ãã«ã³ãŒã«ããã¯ãã
ä»çµã¿ã§ãã®ã§ã(.NETãªã©ã§ã¯)å
æ¥å®è¡é å¶åŸ¡ã¯ãããŸããã
XCube_Delegate ã¯ãã®ç¹ãæ¡åŒµããŠãããregister() ã®ç¬¬äºãã©ã¡ãŒã¿ã«ãã©ã€ãªãªãã£ãæå®
ããããšã§å®è¡é ãå¶åŸ¡ããããšãã§ããŸãã
XCUBE_DELEGATE_PRIORITY_1 ïœ XCUBE_DELEGATE_PRIORITY_10
ã®å®æ°ããããããã±ãŒãžæšæºã®ããªã²ãŒãã¯ç¹æ®ãªãã®ãé€ãã°ããã¹ãŠ
XCUBE_DELEGATE_PRIORITY_5 ã§ç»é²ãããŠããã¯ãã§ãã
æšæºã®ãã®ããå
ãåŸã§åŠçããªããšå®è¡ããããããªãå Žå㯠5 ããåªå
床ã®é«ãå®æ°ã
第äºãã©ã¡ãŒã¿ã«å
¥ããŠãããšå
ã«å®è¡ãããããã«ãªããŸãã
åãåªå
床ã®ã³ãŒã«ããã¯ç»é²ã®å®è¡é åºã«é¢ããŠã¯æªå®çŸ©ïŒäžå®ïŒã§ãã
ã£ãŠãªæãã«ãªã£ãŠãããŸãã(^^)
2008/05/07 20:48 ITOH Takashi <tohok...@gmail.com>:
--
minahito (mina...@gmail.com)
minahito ããã¯æžããŸãã:
> XCube_Delegate ã¯ãã®ç¹ãæ¡åŒµããŠãããregister() ã®ç¬¬äºãã©ã¡ãŒã¿ã«ãã©ã€ãªãªãã£ãæå®
> ããããšã§å®è¡é ãå¶åŸ¡ããããšãã§ããŸãã
ã¯ããã²ãšã€ã®Delegateã®äžã§ãå®è¡é¢æ°ã®ãã©ã€ãªãªãã£é ã¯
ããã®ã§ãããDelegateèªèº«ã®å®è¡é åºã¯äœãããããããç¡ãããªãŒãšã
æå
ã«ãXOOPSCube Dev.ãã€ãã«ãããã®ã§ããããã®P.231ïœ232ã«
DelegateäžèŠ§ãããã®ã§ããã
ãLegacy_Util.CreateModuleã ã¯ã ãLegacy_RenderSystem.SetupXoopsTplã ã®åã«å®è¡ãããã»ã»ã»
ãšãããããã®ã§ãã
ãªãã§ãããªããšãç¥ããããšæã£ãããšãããšã
Legacy_RenderSystem.SetupXoopsTpl
ã«ãxoops_version.phpã®å
容ãåæ ãããåŠçããããããšæã£ãã®ã§ããã
Legacy_Util.CreateModule
Legacy_RenderSystem.SetupXoopsTpl
Legacy_Util.CreateBlockProcedure
ã®é ã§(éã ã£ãããªïŒ) Delegate->call()ãããã®ã§ãBlockã®æ¹ã
éã«åããªããªãŒãšã
ã§ããã°ãæŽã«ãã®åŸã§CallãããDelegateã§åŠçãããããšæã£ãã®ã§ããã
ãããèŠã€ãããªãã»ã»ã»ã»ãšããç¶æ³ã§ãã
äŒè€
> ããã®ã§ãããDelegateèªèº«ã®å®è¡é åºã¯äœãããããããç¡ãããªãŒãšã
ããã¯ãœãŒã¹ãèªã以å€ã§ã¯ã·ãŒã±ã³ã¹å³ãèµ·ãããªããšã€ãããªããšæããŸããã
ã€ã¡ãŒãžçã«ã¯ã
class A
{
function B() {}
function C() {}
function D()
{
$this->B();
$this->C();
}
}
ãšãããã®ãã
class A
{
function B() {}
var $mC;
function D()
{
$this->B();
$this->mC->call();
}
}
ãšæžãæããã®ããããªã²ãŒãã§ãã®ã§ã
ãããªã²ãŒãã«çµã£ãå®è¡é ã
ãšãããããèãæ¹çã«ã¯ãåŠçã®ã·ãŒã±ã³ã¹ãã©ããªã£ãŠããã®ãããšããæèŠã§
èŠãããšã«ãªããšæããŸãã
ããªã²ãŒããªããžã§ã¯ãã¯èªåã®ç»é²åãç¥ããªãã®ã§ã XCube_Delegate ã«ãã¬ãŒ
ã¯ãã€ã³ããprintfãããããŠãè¿œããŸããã
Legacy_RenderSystem.SetupXoopsTpl ã¯ã¡ãã£ãšç¹æ®ã§ã
$xoopsTpl ãæ©ã段éã§äœãããŠããªããšäºææ§ããšããªãããã Package_Legacy
ã«ã¯ã getRenderSystem("Legacy_RenderSystem") ãšã ãã³ãŒã«ããŠãã¬ã³ããŒã·ã¹
ãã ãæ¬æ¥å¿
èŠã§ã¯ãªãææã«ãã£ããšã¬ã³ããŒã·ã¹ãã ãçæã㊠$xoopsTpl ãäœã
ãšããåé¿çããšãããŠããŸãã
ïŒXOOPS Cube ã¯èãæ¹çã«ã¯ã¬ã³ããªã³ã°çŽåãŸã§ã¬ã³ããŒã·ã¹ãã ãå¿
èŠãšããªã
ãããã X2 ã¢ãžã¥ãŒã«ã¯ common çµäºåŸã« $xoopsTpl ããããã®ãšããŠæžãããŠãã
ããã®ããããããç¹æ®ãªåé¿çãä»èŸŒãå¿
èŠããã£ãïŒ
ãããã£ãŠã Legacy_RenderSystem.SetupXoopsTpl ãã³ãŒã«ãããã¿ã€ãã³ã°âŠâŠ
ããªãã¡ Legacy_RenderSystem::Legacy_RenderSystem() ãå®è¡ãããã¿ã€ãã³ã°ã¯ã
å³å¯ã«ã¯äžå®ã§ãããæãã倧åã® Package_Legacy ã®ãµã€ãã§ã¯ããã®åé¿ççšã®
ã¢ãžã¥ãŒã«ããªããŒã StartupXoopsTpl ãå®è¡ãããã¿ã€ãã³ã°ã«ãªããšæããŸãã
"äžéšã® XOOPS2 ãªãœãŒã¹ã¯ãLegacy_RenderSystemãXOOPS Cubeã®æ¬æ¥ã®
ããã»ã¹äžã§æºåãããããåã« $xoopsTpl ãå¿
èŠãšããŸãããã®ããã«ããã®ã¢ã¯
ã·ã§ã³ãã£ã«ã¿ãŒã¯ãããŒãšã㊠Legacy_RenderSystem ãååŸããããšè©Šã¿ãŸãã"
2008/05/08 10:05 ITOH Takashi <tohok...@gmail.com>:
--
minahito (mina...@gmail.com)
䌌ããããªããšã«é¢ããŠåã«ã¡ãã£ãšæžããã®ã§ããã
http://xoopscube.jp/modules/xigg/index.php/node/64?comment_id=83#comment83
èŠã¯ãdelegateã®ç»é²ïŒregisterïŒãšdelegateã®å®è¡ïŒcallïŒã¯delegate managerã«
å
šãŠä»»ããŠããŸãã°å°ãèŠéãããããªããããªããšãã·ã°ããã£ã®ãã§ãã¯ãè¡ã£ãŠãã
delegateãUser_UserDeleteAction::_mDoDeleteã®ã¿ã®ããã§ããã®ã§ãã
XCube_Delegate::call()ã ãšå®è¡ãããŠããããªã²ãŒãåãåãããªãã®ã§ãããã
XCube_DelegateManager::call()ãäœæããŠããªã²ãŒãå®è¡æã¯å¿
ããã®ã¡ãœããçµç±
ã«ãããããŸãã¯XCube_DelegateUtils::call()çµç±ã«ãããã«çµ±äžãããšãå®è¡ãããŠãã
ããªã²ãŒãåãè¿œãããããªãïŒXCube_DelegateManagerã¯å
šãŠã®ããªã²ãŒãåã
ææ¡ããŠããã¯ããªã®ã§ïŒããªããããš
> èŠã¯ãdelegateã®ç»é²ïŒregisterïŒãšdelegateã®å®è¡ïŒcallïŒã¯delegate managerã«
> å
šãŠä»»ããŠããŸãã°å°ãèŠéãããããªããããªããšã
確ãã«ããœãŒã¹ã®è¿œããããã ããèããã®ã§ããã°ããã¹ãŠmanagerçµç±ã®æ¹ã楜ãããããŸããã
XCLã«ãããDelegateã®å°å ¥ã®çµç·¯ã«ã€ããŠã¯ãæ§XCubeDev MLã§ã®è©±ãã«ãªããŸããã»ã»ã»
çºç«¯ïŒ 以äžã«ããŠãX2ã®Hackã«çžåœããéšåããã³ã¢ã«æã«å
¥ããããšãªãå®çŸããæ¹æ³ãæäŸãããïŒ
ã¢ãããŒãïŒïŒ ã€ãã³ãã«ããããã¯ãã€ã³ããèšããEventManagerã«ãã£ãŠå¶åŸ¡ XCL2.1 Alpha1æ代
ã¢ãããŒãïŒïŒ C#ã®delegate(ã¡ãœããã®å§è²)ã®æŠå¿µããŸããŠãPHPã«å®è£
ããŠãXCLå
ã®ã¯ã©ã¹ã¡ãœããã®
ãããããããã æè£
ãšæ¡åŒµãå¯èœã«ãâ XCL2.1 Alpah2以éïŒ
ãšããçµç·¯ã®äžã§ãæåã«Eventã¢ãã«ããã£ãã®ã§ããã®ç¶ç¶ã®ããã«DelegateManagerãšãã圢ã§ã®
倧ååããã€Delegateã®å®çŸ©ã»åŒåºæ¹æ³ãæ®ã£ããšããããšã ãšãå°çã¯ç解ããŠããŸãã
XCLã§ã¯å®è³ªçã«Singletonã®ã¯ã©ã¹ãå€ããããclasså
Delegateã¡ã³ããŒãšã倧åDelegateã®
åºå¥ãããå¿
èŠãããã·ãŒã³ãå°ãªãã§ããããããã¯ãã¡ããšåºå¥ããŠå©çšãããã¹ãã ãš
èããŸãã
çŸç¶ãã®åºå¥ã®åºæºããã¹ãŠæã£ãŠãããïŒãšããè°è«ã¯å¥ã§ããããã©ãŒãã³ã¹ã®é¢ã§ã
DelegateManagerã®ãªãŒããŒããããåé¿ããããã«DelegateçŽäœ¿çšãªããŠã·ãŒã³ã
ãããããããŸãããã»ã»ã»ã»
äœããclasså
Delegateã¡ã³ããŒã«ã€ããŠãæ€ç¥ãã¥ãããšããã®ã¯ãè¯ããããã®ã§ã
ã¡ã³ããŒåã®ããŒãã³ã°ã«ã€ããŠããã¹ãŠ mdã§éå§ãããšãã®ã«ãŒã«ãå¥éèšããŠ
ãããã»ããè¯ãã£ãããªãšã¯æããŸãã
> XCLã§ã¯å®è³ªçã«Singletonã®ã¯ã©ã¹ãå€ããããclasså
Delegateã¡ã³ããŒãšã倧åDelegateã®
> åºå¥ãããå¿
èŠãããã·ãŒã³ãå°ãªãã§ããããããã¯ãã¡ããšåºå¥ããŠå©çšãããã¹ãã ãš
> èããŸãã
> çŸç¶ãã®åºå¥ã®åºæºããã¹ãŠæã£ãŠãããïŒãšããè°è«ã¯å¥ã§ããããã©ãŒãã³ã¹ã®é¢ã§ã
> DelegateManagerã®ãªãŒããŒããããåé¿ããããã«DelegateçŽäœ¿çšãªããŠã·ãŒã³ã
> ãããããããŸãããã»ã»ã»ã»
ãªãã»ã©ãããã§ããããã®èŸºããã¯ãclasså
Delegateãšå€§åDelegateãšãæ確ã«
åããããã°è¯ãã§ããã
ã©ã¡ãããšèšããšãåè
ãçŽç²ãªDelegateã§åŸè
ã¯Eventãšããã€ã¡ãŒãžãªã®ã§ã
ããããæå³ã§ã¯ããããäžèšã®ãããªå®çŸ©ã«ãªãã§ãããããã
DelegateïŒclasså
DelegateïŒ
ã»ããïŒåŠçã«é¢ããŠã®å
šãŠã®æš©éãå§è²ããä»çµã¿
ã»ç§»è²å
ãå¿
é ãšãªãã
ã»ç§»è²å
ãè€æ°ã§ãã£ãå Žåã«åé¡ã¯èµ·ãããªãã®ãïŒ
EventïŒå€§åDelegateïŒ
ã»ããäºè±¡ïŒã€ãã³ãïŒãçºçããããšãéç¥ããä»çµã¿ã
ã»éç¥å
ã¯ãã£ãŠããªããŠãæ§ããªãã
ã»éç¥å
ã¯ããã€ã§ãå¯ã
>> ããã¯ãœãŒã¹ãèªã以å€ã§ã¯ã·ãŒã±ã³ã¹å³ãèµ·ãããªããšã€ãããªããšæããŸããã
>
> ã§ããããã·ãŒã±ã³ã¹å³ã®å匷ããŠãäœã£ãŠã¿ãããªã»ã»ã»
ãã¿ãŸãããã³ã¬ãããèããã XCube_Delegate::call() ã«ãã¬ãŒã¯ãã€ã³ããããããŠã
ïŒManagerãçµç±ããåŒã³åºãã§ã¯ïŒã³ãŒã«ã¹ã¿ãã¯ãã XCube_DelegateManager::call ãéžãã§
ãã®äžã§åŒã³åºãåã調ã¹ããšããäœæ¥ãç¹°ãè¿ãã°ãããªã²ãŒãã®åŒã³åºãé ã®ã¿ããã°ãã
æžãåºããããšã«æ°ã¥ããŸããã
ãããã¯ãã³ãŒã«ã¹ã¿ãã¯ãèŠãã ãã§ãåŒã³åºãå
ïŒãœãŒã¹ã§äœ¿ãããŠããã ãããã®äœçœ®ïŒã¯åãã
ãšæãã®ã§ã該åœãããœãŒã¹ãèŠãŠãããããæžãåºããŠããããšæããŸãã
2008/05/08 23:03 tohokuaiki <tohok...@gmail.com>:
--
minahito (mina...@gmail.com)
minahito ããã¯æžããŸãã:
> minahito ã§ãã
> ãã¿ãŸããã onokazu ãããš nobunobu ãããžã®ã¬ã¹ã¯é·ããªãã®ã§æŒäŒã¿ã«ã¯æžããªãã®ã§ (^^;;
> ãã¡ãã ã:
>
>>> ããã¯ãœãŒã¹ãèªã以å€ã§ã¯ã·ãŒã±ã³ã¹å³ãèµ·ãããªããšã€ãããªããšæããŸããã
>> ã§ããããã·ãŒã±ã³ã¹å³ã®å匷ããŠãäœã£ãŠã¿ãããªã»ã»ã»
>
> ãã¿ãŸãããã³ã¬ãããèããã XCube_Delegate::call() ã«ãã¬ãŒã¯ãã€ã³ããããããŠã
> ïŒManagerãçµç±ããåŒã³åºãã§ã¯ïŒã³ãŒã«ã¹ã¿ãã¯ãã XCube_DelegateManager::call ãéžãã§
> ãã®äžã§åŒã³åºãåã調ã¹ããšããäœæ¥ãç¹°ãè¿ãã°ãããªã²ãŒãã®åŒã³åºãé ã®ã¿ããã°ãã
> æžãåºããããšã«æ°ã¥ããŸããã
ããã£ãŠãXCube_DelegateManager::call()ãããåæã§ãããå°éããã®
http://xoopscube.jp/modules/xigg/index.php/node/64?comment_id=83
ã§ææ¡ãããŠã XCube_DelegateManager::call() ã£ãŠæªå®è£
ãšããããçŸç¶ã§
DelegateManagerããDelegate::call()ããŠå®è¡ã£ãŠããšã¯ç¡ãã§ãããïŒ
> ãããã¯ãã³ãŒã«ã¹ã¿ãã¯ãèŠãã ãã§ãåŒã³åºãå
ïŒãœãŒã¹ã§äœ¿ãããŠããã ãããã®äœçœ®ïŒã¯åãã
> ãšæãã®ã§ã該åœãããœãŒã¹ãèŠãŠãããããæžãåºããŠããããšæããŸãã
ããã£ãŠãDelegate::call()㧠_mCallbacks ããããã£ã調ã¹ãŠã£ãŠããšã§ãããã
ãã®ããããã©ããã£ãŠRegisterããŠAddã㊠_mCallbacksã«è©°ããŠãã®ãããããã£ãŠ
ãªãã®ã§ã詳ãããœãŒã¹ã¿ãŠã¿ãŸãã
äŒè€
> ããã£ãŠãXCube_DelegateManager::call()ãããåæã§ãããå°éããã®
> http://xoopscube.jp/modules/xigg/index.php/node/64?comment_id=83
> ã§ææ¡ãããŠã XCube_DelegateManager::call() ã£ãŠæªå®è£
ãšããããçŸç¶ã§
> DelegateManagerããDelegate::call()ããŠå®è¡ã£ãŠããšã¯ç¡ãã§ãããïŒ
XCube_DelegateManager ãžã®ç»é²åã調ã¹ãããªãâŠâŠãšããæå³ã§æžããŸããã
XCube_DelegateManager ã®åœ¹å²ã¯ Proxy ã§ãããã XCube_DelegateManager::call() ã¯
該åœãã XCube_Delegate::call() ãåŒãã§ããã ãã§ãã
ã§ãã®ã§ XCube_Delegate::call() ã«ãã¬ãŒã¯ãã€ã³ããããããã°ãã¹ãŠã®ããªã²ãŒã
ã® call ãã€ããŸããããŸãã
>> ãããã¯ãã³ãŒã«ã¹ã¿ãã¯ãèŠãã ãã§ãåŒã³åºãå
ïŒãœãŒã¹ã§äœ¿ãããŠããã ãããã®äœçœ®ïŒã¯åãã
>> ãšæãã®ã§ã該åœãããœãŒã¹ãèŠãŠãããããæžãåºããŠããããšæããŸãã
>
> ããã£ãŠãDelegate::call()㧠_mCallbacks ããããã£ã調ã¹ãŠã£ãŠããšã§ãããã
åããã«ãããŠãã¿ãŸãã (^^;
ãããã¬ã®ã³ãŒã«ã¹ã¿ãã¯ããã§ãã¯ãããšããæå³ã§ãã
ããããã°é¢æ°ã®åŒã³åºãå±¥æŽãåãããŸãã®ã§ããœãŒã¹ãè¿œãããçŽ æ©ãåŒã³åºãé ã調ã¹ããã
ãšæããŸãã
xdebug ã§ãã³ãŒã«ã¹ã¿ãã¯ã«ããé¢æ°ã®äžã®å€æ°å€ãŸã§åæ¢äžã«ãã§ãã¯ã§ãããã©ããã¯ç¥ããªã
ã®ã§ããããã¶ãã§ãããšæããŸãã
ïŒC++ã§ããæè¿ã®ãããã¬ã§ã¯å¯èœãªã®ã§ãã¹ã¯ãªããèšèªãªãééããªãã§ããã¯ãïŒ
2008/05/09 20:19 ITOH Takashi <tohok...@gmail.com>:
--
minahito (mina...@gmail.com)
> å°éã§ãã
>
> 䌌ããããªããšã«é¢ããŠåã«ã¡ãã£ãšæžããã®ã§ããã
>
> http://xoopscube.jp/modules/xigg/index.php/node/64?comment_id=83#comment83
orz
ãã¿ãŸããèŠèœãšããŠãŸããããã
ãããè±èš³ãŸã§ãããããã
ããããšãããããŸãã
> èŠã¯ãdelegateã®ç»é²ïŒregisterïŒãšdelegateã®å®è¡ïŒcallïŒã¯delegate managerã«
> å
šãŠä»»ããŠããŸãã°å°ãèŠéãããããªããããªããšã
nobunobu ãããæžãããŠããããã«ããã®æ©æ§ã¯ã
ãŸãåã§ãã XCube_Delegate ããããããã« PHP ã®ã€ã³ã¿ãŒããªã¿ç¹æ§ã«ããªããŒã
ãçµã¿åãããããã®äžçš®ã® Proxy ã§ãã XCube_DelegateManager ã«ä»äºãããããšãã
èãæ¹ã«ãªã£ãŠããŸãã
ãŸãçŽç²ãªã³ãŒã«ããã¯ã®çµ±äžåã欲ããã£ããšãããšããããå§ãŸã£ãŠããŸãã®ã§ã
ãã®èŠ³ç¹ãããããšå
šãŠãã°ããŒãã«ã«ããã€ããstaticã«ãããŠããŸã XCube_DelegateManager
ã¯æ¬ ç¹ãããããã¹ãŠã®ããªã²ãŒãããããéããããã«ãªããšãããã°ã©ã ã«ã¯å€§ããª
å¶çŽãããããŸãã
PHP ã¯ä»®æ³é¢æ°ã®æŠå¿µãç¡ãããã¹ãŠã®ãªããžã§ã¯ãã¡ãœããããªãŒããŒã©ã€ãã§ããèš
èªã§ãã
ãããã¯ã©ã¹ããŒã¹ã®ãªããžã§ã¯ãæåèšèªã§ãã®ã§ãçæããã»ã¹ãããããªããã°ãªãŒ
ããŒã©ã€ããããªããžã§ã¯ããåŸãããšã¯ã§ããŸããã
ä»è
ã«çæããããªããžã§ã¯ãã®æ¯ãèããå€æŽããŠïŒâå§è²ããŠããã£ãŠïŒæ»ããšããã
ãšãã§ããŸããã
ããããã¢ã»ã³ããªã®æ代ãããã®ãããªãšãïŒãããå¿
èŠãªãšãïŒã«ã¯éæ¥ãžã£ã³ãã®ã¢
ãã¬ã¹ãæžãæ¿ããããã¡ã¢ãªãããã¯ãçšæããŠã䜿çšåŽã§ãããæžãæ¿ããŠããŸããã
ããããã³ãŒã«ããã¯ã§ãã
ãããèšèªçã«ãã¡ããšæŽçããã®ã C# ã®ããªã²ãŒãã§ããããã¯ã©ã¹ãšããŠå°å
¥ããã®
ããXCube_Delegate ãšããããšã«ãªããŸãã
ãã ã PHP ã¯ã€ã³ã¿ããªã¿ã®ãããããªããŒããå
è¡ããããã°ã©ã ã§ã¯ãåŸåçæãã
ãïŒçæããããããããªãïŒããªã²ãŒãã«ã¢ã¯ã»ã¹ã§ããªãã£ãããã¢ãžã¥ãŒã«ãæ·±ãäœ
眮ã®ããªã²ãŒããã«ã¹ã¿ãã€ãºçšã«å
¬éã§ããªãã±ãŒã¹ãå€ã
ãããŸãã
ããã¯ãŠãŒã¶ãŒã®æå
ã§åããŠãã«ãå
容ã確å®ãããšãã XOOPS ã®ç¹æ§ããããããã
ãŸããã
ãã㧠XCube_DelegateManager ãå¿
èŠãšãªããããã°ã©ã äžã§çµåã§ããªããã®ããåå
ã䜿çšããŠçµåã®ä»£çãé
延ãããä»äºãæ
åœããŠãããŸãã
ãããšåŒãæãã«ã nobunobu ãããæžãããŠããããã«ãã°ããŒãã«ã¹ã³ãŒãåããã ã
ã§ãªããäžçš®ã® static ç¶æ
ã«ãªããŸãããã® static åãéåžžã«éãå¶éã§ãããªã²ãŒãã®
èªççç±ããã¹ãŠå¹ãé£ã°ãã»ã©å¯çšæ§ãäœäžããŸãã
äºå®äžã® static åãšããã®ã¯ã
onokazuãããèšãããŠããããã«ãããªã²ãŒãã«ãã¹ãŠååãã€ããŠç»é²ãããšããèã
æ¹ã§ãŸãšããŠããŸããšãã€ã³ã¹ã¿ã³ã¹ãåå¥ã«æã€ããªã²ãŒãã®äžèº«ããã¹ãŠåããã®ã«ãªã£
ãŠããŸããšãããã®ã§ãã
åå¥ã«ããªã²ãŒããæã£ãŠãããšãããã XCube_DelegateManager ã®æã€ããªã²ãŒãã®ã
ã€ã³ã¿ãè²°ã£ãŠãããããªç¶æ
ã«ãªã£ãŠããŸããŸãã
ããšãã° XCube_PageNavigator ã®ãããªã¯ã©ã¹ãã³ã¢ãããŒã¹ã§çæããŠè²°ã£ãŠåãåã
å Žåããã¯ã©ã¹ã final ã¯ã©ã¹ã§ç¶æ¿ã§ããªãå Žåããããã®ã¯ã©ã¹ãæã€ããªã²ãŒãã static
ã ãšã€ã³ã¹ã¿ã³ã¹æ¯ã«åŠçãå§è²ããŠããã£ãŠæŽ»çšãããšãã䜿ãæ¹ãã§ããªããªããŸãã
ãããããšçŽç²ãªã³ãŒã«ããã¯ã®æç¶ãçµ±äžåãšããŠã¯åœ¹å²ãæãããªããªããåè¿°ã®äžè¬
çãªããã°ã©ã æ段ã§ãããã³ãŒã«ããã¯ãã®ããæ¹ã«ã€ããŠã¯åèªãã©ãã©ãšããããšã«
ãªã£ãŠããŸããŸãã
ïŒäœè
ããšã«æé ãéããã®ã«ãªãã§ãããïŒ
äœããã®æ¹æ³ã䜿ã£ãŠãçæãããåŽãååãããããŠç»é²ããã° static åãé¿ããããšã
ã§ããŸãããããã¯ãã¹ãŠã®ããªã²ãŒãã global & static ãããšãããã¶ã€ã³ã®ã¢ãŒããã¯
ãã£ã«ããããããããŠããŠã®é åãåºãªããšæããŸãã
ä»ã®ããã« XCube_DelegateManager ã®æå³ãç解ããŠäœ¿ãã»ããå¥å
šã§ãã
çŸæç¹ã§ã¯ XCube_Delegate ã¯ããªããŒãããç»é²åã䜿ã£ãŠã¢ã¯ã»ã¹ãã䜿ãæ¹ã°ããã
ç®ç«ã£ãŠããŸãã®ã§ã XCube_DelegateManager ã«æ©èœãæããŠããŸãããšãã話ãåºãŠã
ãã®ãåãããªãã¯ãããŸããã
ãããçŽç²ãªã³ãŒã«ããã¯æç¶ããšããŠãçŸåšäœ¿ãããŠããŸããããããã®äœ¿çšæãåãã£
ãŠããã°å°æ¥ã¯ããã«äœ¿ãããããã«ãªããšæããŸãã
ãªã®ã§å㯠XCube_Delegate ã¯ãããŸã§åäœã§åœ¹å²ãæãããåãã§ããããã¹ãŠã®ããªã²ãŒ
ãã«ååãã€ã㊠XCube_DelegateManager ã®äžã«ãã㊠global & static åãè¡ããšãæå³
åãããŸã£ããéããã®ã«ãªã£ãŠããŸããšèããŸãã
> ã·ã°ããã£ã®ãã§ãã¯ãè¡ã£ãŠãã
> delegateãUser_UserDeleteAction::_mDoDeleteã®ã¿ã®ããã§ããã®ã§ãã
ãããããéããšèšããããã ã£ããã®ã§ (-_-;;
Cube ã®éçºäžã¯éãéããš Mariâuana ããã«è
ããç¶ããŠããã®ã§ã
ã·ã°ããã£ã®ç»é²ãé¿ããŠããŸããŸããã
2008/05/09 10:32 ã®ã¶ã®ã¶ <nobu...@nobunobu.com>:
> äœããclasså
Delegateã¡ã³ããŒã«ã€ããŠãæ€ç¥ãã¥ãããšããã®ã¯ãè¯ããããã®ã§ã
> ã¡ã³ããŒåã®ããŒãã³ã°ã«ã€ããŠããã¹ãŠ mdã§éå§ãããšãã®ã«ãŒã«ãå¥éèšããŠ
> ãããã»ããè¯ãã£ãããªãšã¯æããŸãã
確ãã«ããå°ããã³ã¬ãªã¢ã³ã«ããŠãè¯ãã£ããããããŸããã (-_-;
2008/05/09 1:07 K. Ono <ono...@gmail.com>:
--
minahito (mina...@gmail.com)
minahitoããã詳现ãªèª¬æããããšãããããŸãã
ããã§ãå
ã«ãå°ãæžãããŠããããŸããããdelegateãševentãšã¯ä»çµã¿ã¯
䌌ãŠããŸããããã®çšéã¯å
šãå¥ã®ãã®ã ãšæããŸãã
> DelegateïŒclasså
DelegateïŒ
> ã»ããïŒåŠçã«é¢ããŠã®å
šãŠã®æš©éãå§è²ããä»çµã¿
> ã»ç§»è²å
ãå¿
é ãšãªãã
> ã»ç§»è²å
ãè€æ°ã§ãã£ãå Žåã«åé¡ã¯èµ·ãããªãã®ãïŒ
>
> EventïŒå€§åDelegateïŒ
> ã»ããäºè±¡ïŒã€ãã³ãïŒãçºçããããšãéç¥ããä»çµã¿ã
> ã»éç¥å
ã¯ãã£ãŠããªããŠãæ§ããªãã
> ã»éç¥å
ã¯ããã€ã§ãå¯ã
minahitoãããæžãããã®ã¯ãããããåè
ã®çŽç²ãªæå³ã§ã®delegateã«
é¢ããŠã ãšæããŸããã€ã³ã¹ã¿ã³ã¹æ¯ã«ããããå¥ã
ã®ããªã²ãŒããå¿
èŠ
ã«ãªããšããç¶æ³ã«ãããŠã¯ãDelegateManagerçµç±ã ãšç¢ºãã«å°ã
ããããªé¢ä¿ã«ãªã£ãŠããŸããŸããã
ããã«å¯ŸããŠãåãDelegateManagerã«çµ±äžããæ¹ãè¯ããšããç¹ãæžããã®ã¯
åŸè
ã®ã°ããŒãã«ãªobserverãããã¯event dispatcherçãªæ©èœã«é¢ããŠã ãš
æããŸãã
ãããã¯ãã¯ããããããåãé¢ããŠèããã¹ããã®ã§ã¯ãªãããšæããŸãã
ããããã§ãããçŸç¶ã§ã¯ã¢ãžã¥ãŒã«éçºè
ã«ããåŸè
ã®å©çšæ³ãã»ãšãã©ã ãš
æããŸãã®ã§ããã®æã«åã€ãã³ãã®æ£ç¢ºãªçºçå°ç¹ããã³çºçææãçªãè©°ã
ã«ããã®ã¯ããã®æ©èœãå©çšããåŽã«åã£ãŠã¯ããªãé ã®çããã®ã§ããããŸãã
ã¯ã©ã¹åã¯ããæå³ãã©ãã¯ããã¯ã¹åã§ãã®ã§ããã®åœ¹å²ã现ååïŒæ確å
ãããŠããã°ããã»ã©å©çšåŽã¯ãšãŠã楜ã«ãªããšæããŸãã
>> http://xoopscube.jp/modules/xigg/index.php/node/64?comment_id=83#comment83
>
> orz
>
> ãã¿ãŸããèŠèœãšããŠãŸããããã
> ãããè±èš³ãŸã§ãããããã
ãããè±èš³ãå®äºããŠããsf.netã«åºãããšæã£ãŠããŸããããéäžã§æ«æããŠããŸããŸããã(^^;
> ããã§ãå
ã«ãå°ãæžãããŠããããŸããããdelegateãševentãšã¯ä»çµã¿ã¯
> 䌌ãŠããŸããããã®çšéã¯å
šãå¥ã®ãã®ã ãšæããŸãã
>
>> DelegateïŒclasså
DelegateïŒ
>> ã»ããïŒåŠçã«é¢ããŠã®å
šãŠã®æš©éãå§è²ããä»çµã¿
>> ã»ç§»è²å
ãå¿
é ãšãªãã
>> ã»ç§»è²å
ãè€æ°ã§ãã£ãå Žåã«åé¡ã¯èµ·ãããªãã®ãïŒ
>>
>> EventïŒå€§åDelegateïŒ
>> ã»ããäºè±¡ïŒã€ãã³ãïŒãçºçããããšãéç¥ããä»çµã¿ã
>> ã»éç¥å
ã¯ãã£ãŠããªããŠãæ§ããªãã
>> ã»éç¥å
ã¯ããã€ã§ãå¯ã
>
> minahitoãããæžãããã®ã¯ãããããåè
ã®çŽç²ãªæå³ã§ã®delegateã«
> é¢ããŠã ãšæããŸãã
ãããïœïœ (^^;
Package_Legacy ã® DelegateManager ã®çšéã¯åè
ãçžåœæ°ãããŸããã
ãšããããã»ã£ãšãã©åè
ã ãšæããŸãã
åŸè ã¯æ°ããã»ã©ããç¡ããšæããŸãã
éç¥ã ããè¡ã£ãŠãåŠçãäŸé ŒããªãïŒéç¥å
ããªããŠãæ£åžžã«åäœããïŒ
系統ã®ãã®ã¯å°ãªãã§ãã倧åã®ãã®ã¯ããªã²ãŒãã§ãŸãã¯ã©ã¹ãäœã£ãŠã
ãã©ã€ããªããªããŒãã§åŠçãçªã£èŸŒãã§ããŸãã
ïŒãã㯠setting ãã¡ã€ã«ããããã°ã«ã¹ã¿ãã€ãºã§ããããã«ïŒ
確ãã« C# ã§ã delegate ãå©çšãã event åãããã®ã§ãã®ç³»çµ±ç«ãŠã¯
å¿
ç¶æ§ããããšæãã®ã§ããã
XCube_DelegateManager ã§ç®¡çãããã® = ã€ãã³ã
ã«ã¯çŸåšãªã£ãŠããªãããšãå
±éèªèã«ããŠè°è«ãé²ããããã°ãšæããŸãã
Package_Legacyã§ã¯ã
XCube_DelegateManager ã§ç®¡çãããã® =
ã95% ... ããªã²ãŒãã ããé
延çµåã®ããã«ïŒã«ã¹ã¿ãã€ãºçšã«ïŒç»é²ããŠãã
ã5% ... å°éããã®ããã€ãã³ãã空ã£ãœã§ãåäœã«æ¯éã¯ãªãã
ãããã®å²åã§ããŸããŸã倧åãããªã²ãŒãççšéã§äœ¿ãããŠããã¯ãã§ãã
> ãããã¯ãã¯ããããããåãé¢ããŠèããã¹ããã®ã§ã¯ãªãããšæããŸãã
> ããããã§ãããçŸç¶ã§ã¯ã¢ãžã¥ãŒã«éçºè
ã«ããåŸè
ã®å©çšæ³ãã»ãšãã©ã ãš
> æããŸãã®ã§ããã®æã«åã€ãã³ãã®æ£ç¢ºãªçºçå°ç¹ããã³çºçææãçªãè©°ã
> ã«ããã®ã¯ããã®æ©èœãå©çšããåŽã«åã£ãŠã¯ããªãé ã®çããã®ã§ããããŸãã
å°éããã®ãã£ããã£ãŠããããšãèªåãªãã«èšãæãããšããããŸã§ã
ãããªã²ãŒãã ãããšã€ãã³ãã ãããšã¢ãžã¥ãŒã«éçºè
ã«ãšã£ãŠã¯ããã¯ãã€ã³ã
ãªã®ã§åŸè
ã®å©çšæ³ãã»ãšãã©ã
ãšããã®ãå®æ ã§ãããã¯å¥ã«
ããããã£ãŠ XCube_DelegateManager ã«çªã£èŸŒãã§ããããªã²ãŒãã¯å
šéšã€ãã³ã
ãã§ããã
ãšããããšã§ã¯ãªããšæããŸãã
--
minahito (mina...@gmail.com)
æžããããŸã§ã«éä¿¡ããŠããŸããŸããâŠâŠ
ããªã²ãŒãããªãŒããŒã©ã€ãåæ§ãã¡ãœããã®æœè±¡åã®ããã®æ¹æ³ã§ããã
PHP ã XOOPS ã®ç¹æ§äžé
延çµåãå¿
èŠãªã®ã§ XCube_DelegateManager ã®ãããª
Proxy ã¯å¿
é ã§ãã
äžæ¹ãã€ãã³ããšããã®ãåããã®ã§ïŒPackage_Legacyã§ã¯æ°ããã»ã©ããç¡ãã§ããïŒ
XCube_EventManager ãšããã®ãäœã£ãŠå³å¯ã«ãããŠãé¢çœããšæããŸãã
ããããçµå±è¿œãã¹ãç®æãäºç®æã«åãããŠããŸãæ°ãããŸãã (^^;
# ãªãçŸåšã® Package_Legacy ã¯ãã€ãã³ãã¯ããªã²ãŒãã€ã³ã¹ã¿ã³ã¹ãäœããªããŠOKã
# ãšããããšã«ãªã£ãŠããŸãã
# XCube_DelegateManager::call() ãçŽåŒã³ããŠãããã®ãã€ãã³ãã ãšèããŠãã ããã
# æ€çŽ¢ãããšåãããšæããŸããå²åãšããŠã¯éåžžã«å°ãªãã§ãã
# éã« $this->mdExecute->register(...) ã§ç»é²ããŠãããã®ã¯å
šãŠããªã²ãŒãã§ã
# ã€ãã³ãçãªæå³åããç¡ããã®ã§ã
åçŽã«æ
å ±ãå°ãªããšããããšãåé¡ã§ãããªããããªã²ãŒããšã€ãã³ããåããã®ã§ã¯
ãªãã Doxygen ã³ã¡ã³ãèŠçŽãçå®ããŠãããã¥ã¡ã³ãã§ãã©ããŒããæ¹ãçŸå®å³ããã
ãšæããã§ããã©ãã§ããããã
ã€ãã³ããšããèãæ¹ãæ°ãã«èµ·ããå Žåã¯ã C# åæ§ delegate ã掻çšããååšãšããŠ
å®çŸ©ã§ãããã§ããã
ïŒãã ããã€ããããã§ãããçŸç¶ã§ã¯ã»ããšãŒã«æ°ãå°ãªãã®ã§æ³šæãã¹;;
ãã»ã£ãšãã©ããªã²ãŒãã§ãïŒ
2008/05/10 14:47 minahito <mina...@gmail.com>:
--
minahito (mina...@gmail.com)
> # XCube_DelegateManager::call() ãçŽåŒã³ããŠãããã®ãã€ãã³ãã ãšèããŠãã ããã
> # æ€çŽ¢ãããšåãããšæããŸããå²åãšããŠã¯éåžžã«å°ãªãã§ãã
ããã§ãããXCube_DelegateManager:call()ãšããã®ã¯ãªãã®ã§ãXCube_DelegateManagerãã
ç»é²ãããŠããããªã²ãŒããååŸããŠããããcall()ããŠããXCube_DelegateUtils::call()ãæ€çŽ¢
ãããšããããšã«ãªãããšæããŸãã
åçŽã«æ€çŽ¢ããéãã§ã¯ãXCube_Delegate::call()ãXCube_DelegateUtils::call()ãã
å°ãå€ããšãããšããã§ããããã
ãã ãããªã²ãŒããšã€ãã³ãã®çžéã«é¢ãã件ã¯ãminahitoãããšå°ãèªèãéã£ãŠãã
ã¿ãããªã®ã§ããã以äžã®è°è«ã¯æ¢ããŠãããŸãã
èŠã¯ãminahitoããããã£ããã£ãŠããŸããã
> å°éããã®ãã£ããã£ãŠããããšãèªåãªãã«èšãæãããšããããŸã§ã
>
> ãããªã²ãŒãã ãããšã€ãã³ãã ãããšã¢ãžã¥ãŒã«éçºè
ã«ãšã£ãŠã¯ããã¯ãã€ã³ã
> ãªã®ã§åŸè
ã®å©çšæ³ãã»ãšãã©ã
>
> ãšããã®ãå®æ
ãšãããšãããããã®çºç«¯ã§ã
ããªã²ãŒãã ãããšã€ãã³ãã ãããšãçŸç¶ã¯ãããã¯å
šãŠå€éšãžãšå
¬éããããã¯ãã€ã³ã
ãšããŠã®äœ¿ãæ¹ãã»ãšãã©ã§ãããããããåããã¯ãã€ã³ãã®çºçã®é çªãæ£ç¢ºãªç®æã
ææ¡ã§ããªãã®ã¯ã¢ãžã¥ãŒã«éçºè
åŽããã¿ããšãã€ã
â
ããã§ã¯DelegateManagerã®ããªã²ãŒãåãå©çšããŠãå šãŠã®ããªã²ãŒããçæïŒå®è¡ãããã®ãè¯ãã®ã§ã¯ïŒ
â
>> ããªã²ãŒãã«ãã¹ãŠååãã€ããŠç»é²ãããšããèãæ¹ã§ãŸãšããŠããŸããšãã€ã³ã¹ã¿ã³ã¹ãåå¥ã«
>> æã€ããªã²ãŒãã®äžèº«ããã¹ãŠåããã®ã«ãªã£ãŠããŸãããšãããã®ã§ãŸããã
â
ããã§ã¯ãããã£ããã®ã¯çŽç²ãªããªã²ãŒããšããŠããã®ä»ããªã²ãŒããšã¯æ確ã«åããæ¹ãè¯ãã®ã§ã¯ïŒ
ãšããããšãèšãããã£ãã®ã§ãã
ãŸãããœãŒã¹ã³ãŒãäžã§å
·äœçã«èšããšãXCube_Delegate::register()ã§åºæã®ããªã²ãŒãåã§
ã°ããŒãã«ã«ç»é²ãããŠããã«ãé¢ããããããªã²ãŒãåã§ã¯ãªãXCube_Delegate::call()ã§
ããªã²ãŒããå®è¡ãããŠãããã®ãç¶æ³ãè€éã«ããŠããã®ã§ã¯ãªãããªãŒãšæããŸãã
> åçŽã«æ
å ±ãå°ãªããšããããšãåé¡ã§ãããªããããªã²ãŒããšã€ãã³ããåããã®ã§ã¯
> ãªãã Doxygen ã³ã¡ã³ãèŠçŽãçå®ããŠãããã¥ã¡ã³ãã§ãã©ããŒããæ¹ãçŸå®å³ããã
> ãšæããã§ããã©ãã§ããããã
ããã§ãè¯ããšæãã®ã§ããããã®ããªã²ãŒãæ©æ§ãå©çšããŠãã¢ãžã¥ãŒã«éçºè
ç¬èªã®
ããªã²ãŒãçãã©ãã©ãå¢ããŠããããšãèãããšãã
ãããã°æ©èœãæå¹ã«ããã ãã§ãå®è¡ãããããªã²ãŒããé çªã«ãã³ã衚瀺ã§ããã®ã
éçºè
ããŠãŒã¶ã«ãšã£ãŠãäžçªè¯ãã®ã§ã¯ãªãã§ããããã
> åçŽã«æ€çŽ¢ããéãã§ã¯ãXCube_Delegate::call()ãXCube_DelegateUtils::call()ãã
> å°ãå€ããšãããšããã§ããããã
ããã£;; ãŸãã§ãã!?
ãããªã¯ãã¯âŠâŠ
Mariæ¬ã«ã°ããŒãã«ããªã²ãŒãäžèŠ§ãããã®ã§åŸæ¥ã¡ãã£ãšç¢ºèªããŠã¿ãŸãã
ã€ãã³ã颚ã®çšéã¯æ°ããã»ã©ãããªãã¯ãâŠâŠ
> ãŸãããœãŒã¹ã³ãŒãäžã§å
·äœçã«èšããšãXCube_Delegate::register()ã§åºæã®ããªã²ãŒãåã§
> ã°ããŒãã«ã«ç»é²ãããŠããã«ãé¢ããããããªã²ãŒãåã§ã¯ãªãXCube_Delegate::call()ã§
> ããªã²ãŒããå®è¡ãããŠãããã®ãç¶æ³ãè€éã«ããŠããã®ã§ã¯ãªãããªãŒãšæããŸãã
å人çã«ã¯ãããªã²ãŒãã€ã³ã¹ã¿ã³ã¹ã®ææãšãããã·ã®é¢ä¿ãèããã°ã
ç»é²ããããããŸããã€ã³ã¹ã¿ã³ã¹ã®ã»ãã䜿ãã¹ãã ãšæããŸãã
æååãç»é²ãšå®è¡ã®ïŒã«æã§äœ¿ãã®ã奜ã¿ãããªããšããã®ããããŸããã
ç»é²ããããããŒãžã£ãéããŠãããªããã°ã€ã³ã¹ã¿ã³ã¹ãéããŠããšè»žããã¬ãã®ã
ããŸã奜ã¿ã§ã¯ãããŸããã§ããã
ãªã®ã§ãã¡ãã®ã»ããããªã²ãŒããšãããã®ã®èªèçã«ã·ã³ãã«ã ãšèªèããŠããã®ã§ã
ããã«ãªã¹ã«ããŠãããšã¯æããŸããã§ããã
ã¡ãã£ãšèããŠã¿ãŸãã(^^;
# ãã ãå¥éçæããŠãããŒãžã£ãŒã®ãããã«ç»é²ãããã®ã§ãã£ãŠãã
# çæãããã®ãã€ããã§ããååšïŒçæäž»ïŒã¯ãã£ã¡ã䜿ããšããããã°ã©ãã³ã°ã¹ã¿ã€ã«ã¯ã
# ããªã²ãŒãã«éã£ã話ã§ã¯ãªãã®ã§ãå
šè¬çã«ãXOOPS Cube ããããã£ããã®ã«å¯ŸããŠã
# ã©ã®ãããªããã°ã©ã 芳ããã£ãŠããã£ãŠããã®ããšãã話ã«ç¹ãã£ãŠããæ°ãããŸãã
# åã¯ãã€ã³ã¿ãã€ããã§ãããªãããããé£çµ¡çšã«ä»æã«ç»é²ããŠãã
# this å
ã§ã¯èªåãã€ããã§ãããã€ã³ã¿ã®ã»ããéããŠã¢ã¯ã»ã¹ãã掟ãªã®ã§âŠâŠ
> ãããã°æ©èœãæå¹ã«ããã ãã§ãå®è¡ãããããªã²ãŒããé çªã«ãã³ã衚瀺ã§ããã®ã
> éçºè
ããŠãŒã¶ã«ãšã£ãŠãäžçªè¯ãã®ã§ã¯ãªãã§ããããã
ããã¯ããã㬠or ãããã¡ã€ã©ã§ã¯ãã¡ãªã®ã§ããããïŒ;;;
ãã¿ãŸããPHPçã«ã¯çŽ 人çºèšã«ãªãã®ã§ãããããã¯ä»èšèªãªããããã¡ã€ã©ã§èŠãéšå
ã ãšæããŸãããã»ã©ã®ããšãããã°ã¢ãã¿ãªã³ã°ããŸããâŠâŠ
çŸåšã®ããªã²ãŒãã¯éåžžã«ããªããã£ããªååšã§ãã®ã§ã
PHPåŽã®ã³ãŒã«ã¹ã¿ãã¯ãèŠããªããšããªã²ãŒãã®ææè
ããããªã²ãŒãã«é£ã¶åã®ã¹ã¿ãã¯
ãã¬ãŒã ã®æ
å ±ã¯æŽããŸããã
ãã㯠"ã³ãŒã«ããã¯å" ãšããæŠå¿µãããïŒå®£èšããçææ¯ã«äœ¿çšã§ããïŒéãããããªããŸ
ããããã³ãã®ããã«ãããäœãã«æãããšããã®ããå人çã«ã¯ããŸãèããªãæ¹æ³ã§ãã
ããšãã°ä»èšèªä»ã·ã¹ãã ãªã©ãã¿ãŠããã³ãŒã«ããã¯ã®èšæž¬ã®ããã«ã³ãŒã«ããã¯ã®äœ¿ãæ¹ã
ååšå®çŸ©èªäœãå€ããŠããŸããšããã®ã¯èŠãããšããããŸãããåãèŠãããšãç¡ãã ããã
ãããŸãããâŠâŠ
ããªã²ãŒãã¯ã¡ãœããã®æœè±¡åææ³ã®ã²ãšã€ã§ãã®ã§æŠå¿µçã«ã¯ã¡ãœãããšåãã§ãã
ãããèããã°ãããªã²ãŒãã ãã§ãªãç¶æ¿æ¡åŒµå¯èœãªã¯ã©ã¹ãªã©ã®ã¡ãœããã®ã·ãŒã±ã³ã¹ã
æŽã¿ãããšãããããšæããŸãã
ãããå«ããŠãããã¬ãïŒåãã€ã¡ãŒãžãããšããã®ïŒãããã¡ã€ã©ãããã°ãªãŒã«ãªãã±ãŒ
ã ãšæããã§ããã©ããªãã§ããããïŒ (^^;
# ãããªããšèšã£ãšã㊠PHP ã®ãããã¡ã€ã©ã¯ãŸã£ãã詳ãããªã orz
ãªãããã®ãžãïŒã³ãïŒããµãããŠäžåããã¥ã¡ã³ãã«ããã»ããããã§ããããã
ããã§äžè¶³ãããã°ïŒãããã¬ã®æ©èœã§ã¯ããã°ã©ã äžäžå¥å
šãªåé¡ãããã®ãªãïŒæ¡åŒµãã
ãšãã§âŠâŠ
2008/05/10 18:29 K. Ono <ono...@gmail.com>:
--
minahito (mina...@gmail.com)
> # ãã ãå¥éçæããŠãããŒãžã£ãŒã®ãããã«ç»é²ãããã®ã§ãã£ãŠãã
> # çæãããã®ãã€ããã§ããååšïŒçæäž»ïŒã¯ãã£ã¡ã䜿ããšããããã°ã©ãã³ã°ã¹ã¿ã€ã«ã¯ã
> # ããªã²ãŒãã«éã£ã話ã§ã¯ãªãã®ã§ãå
šè¬çã«ãXOOPS Cube ããããã£ããã®ã«å¯ŸããŠã
> # ã©ã®ãããªããã°ã©ã 芳ããã£ãŠããã£ãŠããã®ããšãã話ã«ç¹ãã£ãŠããæ°ãããŸãã
> # åã¯ãã€ã³ã¿ãã€ããã§ãããªãããããé£çµ¡çšã«ä»æã«ç»é²ããŠãã
> # this å
ã§ã¯èªåãã€ããã§ãããã€ã³ã¿ã®ã»ããéããŠã¢ã¯ã»ã¹ãã掟ãªã®ã§âŠâŠ
ã¯ããåãminahitoãããšåã掟ã§ã(^^;
ãã ãä»åã®ãregister()ã§ããªã²ãŒãåãã°ããŒãã«å ¬éããŠããããªã²ãŒãã®å Žåã
class A
{
var $a;
function A()
{
$a =& new XCube_Delegate();
$a->register('my delegate name');
}
function doSomething()
{
$a->call();
}
}
ãšã
class A
{
function doSomething()
{
XCube_DelegateUtils::call('my delegate name');
}
}
ãšã¯ãåãã§ã¯ãªãããªããšã
ã©ã¡ãããšèšããšãåŸè
ã®æ¹ãå®éã®ããªã²ãŒãå®è¡å°ç¹ã«ããªã²ãŒãåãæãã®ã§ã
ããã¯ãã€ã³ããšããŠã¯åããæãããããªãããããšããã ãã®ããšã§ãã
C#ã§ã®ããªã²ãŒãã®äœ¿çšæ³ãšããšã¯éã£ãŠãããããããŸããããã
ãã ãä»ã®ãšãããããªã²ãŒãã®register()åã«ã³ãŒã«ããã¯ãèšå®ãã
ããšãã§ããªãã®ã§ãpreloadãšãã§äžã®äŸã®my delegate nameããªã²ãŒãã«
ã³ãŒã«ããã¯ãadd()ã§ããããã«ããã«ã¯ãã³ãŒããå°ãå€æŽããå¿
èŠããããš
æããŸãã
>> ãããã°æ©èœãæå¹ã«ããã ãã§ãå®è¡ãããããªã²ãŒããé çªã«ãã³ã衚瀺ã§ããã®ã
>> éçºè
ããŠãŒã¶ã«ãšã£ãŠãäžçªè¯ãã®ã§ã¯ãªãã§ããããã
>
> ããã¯ããã㬠or ãããã¡ã€ã©ã§ã¯ãã¡ãªã®ã§ããããïŒ;;;
> ãã¿ãŸããPHPçã«ã¯çŽ 人çºèšã«ãªãã®ã§ãããããã¯ä»èšèªãªããããã¡ã€ã©ã§èŠãéšå
> ã ãšæããŸãããã»ã©ã®ããšãããã°ã¢ãã¿ãªã³ã°ããŸããâŠâŠ
ã¯ããåãéçºè åãã§ããã°ããã§è¯ããšæããŸãã
ãã ãä»åŸããŠãŒã¶ãã©ãã©ãããªããŒããè¿œå ããŠãã£ãã
ããŠããã®éã«åé¡ãçºçããæã«ãå°ãé¢åããªããšã
ããã°æ©èœãªã³ã§ããªã²ãŒãåãåºãŠããŠãããã®ç§»è²å
ã
åãããªããšããŸãæå³ããªããããããŸããããã
ãã ãèŠç¥ãã¬ããªã²ãŒãåã衚瀺ãããŠããããããããã«
é¢ããŠãŠãŒã¶ããæŽã«æ
å ±ãæäŸããŠããã£ãããšããäœããã®
察å¿ããæããªããªãããããªãããšæã£ãã®ã§ãããã
ããã ãã®çç±ã§ãã®ã§ããã®èŸºãã¯ãä»»ãããŸã(^^;
> ãã ãä»ã®ãšãããããªã²ãŒãã®register()åã«ã³ãŒã«ããã¯ãèšå®ãã
> ããšãã§ããªãã®ã§ãpreloadãšãã§äžã®äŸã®my delegate nameããªã²ãŒãã«
> ã³ãŒã«ããã¯ãadd()ã§ããããã«ããã«ã¯ãã³ãŒããå°ãå€æŽããå¿
èŠããããš
> æããŸãã
ãããŸãããããã¯æ¢ã«ã§ããã¿ããã§ããã(^^;
> ãã ãä»åã®ãregister()ã§ããªã²ãŒãåãã°ããŒãã«å
¬éããŠããããªã²ãŒãã®å Žåã
>
> class A
> {
> var $a;
>
> function A()
> {
> $a =& new XCube_Delegate();
> $a->register('my delegate name');
> }
>
> function doSomething()
> {
> $a->call();
> }
> }
>
> ãšã
>
> class A
> {
> function doSomething()
> {
> XCube_DelegateUtils::call('my delegate name');
> }
> }
>
> ãšã¯ãåãã§ã¯ãªãããªããšã
C ã®é¢æ°ãã€ã³ã¿ãšãã C# ã®ããªã²ãŒããšãã£ãŠããããŸã§é¢æ°ã®åœ¢ã§åŒã¶ãããªãã§ããã
ãããå€ã®ç®¡çããååšã«åŒãæž¡ãããšããŠãããããŸã§ãã£ã±é¢æ°ã®åœ¢ã§åŒã³ãããªããšããã®ããããŸãã
ããããããããæéãåããã®ã§ãã£ããèŠãŠã¿ãŸãããã
ããªã²ãŒãç³»ã®åŠçã§ãã€ã³ã¹ã¿ã³ã¹ããã®ã³ãŒãã«é¢é£ããã¡ã¢ãªäžã«ç¢ºä¿ã§ããªãå Žé¢ïŒããšãã° xoops_gethandlerïŒ
ã§ã¯ã€ãã³ãçã«èªãã§ããããçµæ§ã°ãã°ãã§ããã (-_-;;
ãŸãã global static function ã®äžã§ããããšããã°ããããŒãžã£ã«ã€ã³ã¹ã¿ã³ã¹ã®ç®¡çãå§èšãã以å€ã«ã»ãã«
æ¹æ³ã¯ãªããã§ããâŠâŠ
ããšãã³ãŒã«ã¹ã¿ãã¯ãèŠãæ¹æ³ãè©ŠããŠã¿ãŸãããããã£ãšèŠãã«ã¯äžäŸ¿ã§ããã
å
šäœã®åãã¯ãããã¡ã€ã©ã䜿ã£ãŠã€ããã§ãããšã¯ onokazu ããã®ãã£ãããããã« DelegateManager ã亀æããŠ
åºåã§æãããããªããªãã
ïŒXCube_Delegate çŽã¯ä»ã®ãšãããããã¡ã€ã©ã§ããããŠããããšããŠïŒ
ãã®ãã³ãŒã«ããã¯ãã©ãå¹çããã€ããã§ããã£ãŠãéçºã«äœ¿ã£ãŠãããããšããæ
å ±ãé瀺ããããšããããšã«é¢ããŠã¯ã
C ã©ã€ãã©ãªãªã©ã«äžæ¥ïŒã©ãããæ°å幎ã®ïŒé·ããããšæãã®ã§ãæ¹ããŠãã®ãžããèŠãŠã¿ãŠããã¯ããããªæŽåæ¹æ³ã
ããã°ãã¯ãããŠãããã€ããã§ãã
æããæã£ãŠãŸããã PHP ã ãšãããã°çšã«åŠçãåããããŠãããªãªãŒã¹ã§ãããåãé€ããªãã®ã§ã
XCube_DelegateManager ã XCube_Delegate ã«éçºè
æ¯æŽçšã®ã³ãŒããéåžžã«åã蟌ã¿ã«ããã§ãããã
ãã®ãããã€ãã¢ãããŸãã #if defined DEBUG ïœ #endif ã¿ããã«æ¬ããã onokazu ããã®ã¢ã€ãã¢ã§äžçºãªãã§ããã
ã©ãããŠãæ
éã«ãªã£ãŠããŸãâŠâŠ
ïŒãŸã ãããŒãžã£ç³»ã«é¢ããŠã¯äº€æã§ããã®ã§ããã§ããã final class ç³»ããŸããïŒ
ããã㯠SDK ã³ã¢ãšããã§ãªãã³ã¢ãåãããšãã以åãªã«ãã§åºããã¢ã€ãã¢ã§ããããããããªãã
--
minahito (mina...@gmail.com)
minahito ããã¯æžããŸãã:
> > XCube_DelegateManager ãžã®ç»é²åã調ã¹ãããªãâŠâŠãšããæå³ã§æžããŸããã
> > XCube_DelegateManager ã®åœ¹å²ã¯ Proxy ã§ãããã XCube_DelegateManager::call() ã¯
> > 該åœãã XCube_Delegate::call() ãåŒãã§ããã ãã§ãã
> >
> > ã§ãã®ã§ XCube_Delegate::call() ã«ãã¬ãŒã¯ãã€ã³ããããããã°ãã¹ãŠã®ããªã²ãŒã
> > ã® call ãã€ããŸããããŸãã
ãã®æ¹æ³ã§ãã£ãŠã¿ãŸããã
XCube_Delegate::call() ã® call_user_func_array ããçŽå(5è¡å)ã«ã
dlog($callback[0], $callback[1], $callback_array[1]);
ã£ãŠå·®ã蟌ãã§ãmainfile.phpã® define('XOOPS_ROOT_PATH', '****'); çŽäžã«
ãã°çšãã¡ã€ã«ãã€ã³ã¿ãšdlogé¢æ°ãå®çŸ©ã
$_fp = fopen(XOOPS_ROOT_PATH.'/cache/dele_log.log', "a+");
function dlog($class, $method, $file)
{
static $time;
if (is_null($time)){
$time = date('Y/m/d H:i:s');
fputs($GLOBALS['_fp'], sprintf("\n-- log start [%s] %s --\n", $_SERVER['REQUEST_URI'], $time));
}
$e = '::';
if (is_object($class)){
$e = '->';
$class = get_class($class);
}
///
$find = false;
$root =& XCube_Root::getSingleton();
$dls =& $root->mDelegateManager->_mDelegates;
foreach ($dls as $d_name=>$dls2){
foreach ($dls2 as $delegate){
foreach ($delegate->_mCallbacks as $priority=>$_callbacks){
foreach ($_callbacks as $callback_filepath){
$callback = $callback_filepath[0];
$_callback_class = is_object($callback[0]) ? get_class($callback[0]) : $callback[0];
$_callback_method = $callback[1];
if ($class==$_callback_class && $method==$_callback_method){
$find = true;
fputs($GLOBALS['_fp'], sprintf("[DelegateName] %s (priority:%d)\n", $d_name, $priority));
}
if (isset($callback_filepath[1]) && $callback_filepath[1]==$file){
fputs($GLOBALS['_fp'], sprintf(" [FILE]=>%s \n", $callback_filepath[1]));
}
}
}
}
}
if (!$find){
fputs($GLOBALS['_fp'], "[DelegateName]=>Not Found. \n");
}
$log = ' '.$class.$e.$method;
fputs($GLOBALS['_fp'], $log."\n");
}
ã£ãŠãããšã管çç»é¢ã®ãŠãŒã¶ãŒã°ã«ãŒãäžèŠ§ã§ã¯
-- log start [/test/xcl/Package_Legacy/html/modules/user/admin/index.php?action=GroupList] 2008/05/29 12:34:11 --
[DelegateName]=>Not Found.
Legacy_TextFilter::getInstance
[DelegateName]=>Not Found.
XCube_TextFilter::getInstance
[DelegateName]=>Not Found.
Legacy_DebuggerManager::createInstance
[DelegateName] XCube_Session.SetupSessionHandler (priority:50)
Legacy_SessionCallback::setupSessionHandler
[DelegateName] XCube_Session.GetSessionCookiePath (priority:50)
Legacy_SessionCallback::getSessionCookiePath
[DelegateName] Legacy_Controller.SetupUser (priority:50)
User_Utils::setupUser
[DelegateName] Legacy_Controller.SetupUser (priority:50)
Legacy_ThemeSelect->doChangeTheme
[DelegateName]=>Not Found.
User_ActionFrame->execute
[DelegateName] User_ActionFrame.CreateAction (priority:50)
User_ActionFrame->_createAction
[DelegateName]=>Not Found.
XCube_PageNavigator->fetchNaviControl
[DelegateName] Legacy_TextFilter.MakePreXCodeConvertTable (priority:20)
Legacy_TextFilter::makePreXCodeConvertTable
[DelegateName] Legacy_TextFilter.MakeClickableConvertTable (priority:20)
Legacy_TextFilter::makeClickableConvertTable
[DelegateName] Legacy_TextFilter.MakeXCodeConvertTable (priority:20)
Legacy_TextFilter::makeXCodeConvertTable
[DelegateName] Legacy_TextFilter.MakeXCodeCheckImgPatterns (priority:20)
Legacy_TextFilter::makeXCodeCheckImgPatterns
[DelegateName] Legacy_TextFilter.MakePostXCodeConvertTable (priority:20)
Legacy_TextFilter::makePostXCodeConvertTable
[DelegateName]=>Not Found.
User_GroupFilterForm->getTotalItems
ã¿ããã«åºãŸãããããã¯ããã¬ãŒã³ãªXCLã ã£ãã®ã§ããã ãã§ãã
HDã§è²ã
ãšã€ã³ã¹ããŒã«ãããšçµæ§ãªå¢ãã§ãã¡ããã¡ãåºãŸããã
æã
ãNot Foundã§Delegateã®ååãèŠã€ããããªããã§ããã
LazyãªDelegateãšãããã€ãªã®ããªïŒ
äŒè€