1.ã¯ããã«
ããã¯äœã§ãã
ãã©ããã·ã¹ãã ã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ããã³MODéçºè
ã¯phpBBã³ãŒãã§ãã©ãããèšå®ããããç¬èªã®æ©èœã§ãããã䜿çšãããã§ããŸãã
ãã©ããã䜿çšã§ããPhpBB颿°
phpBBã«ã¯ããã©ããã§ãã£ããã§ãã4ã€ã®é¢æ°ããããŸãã
phpbb_user_session_handlerïŒïŒ -ãŠãŒã¶ãŒå
ã§åŒã³åºããã::ã»ãã·ã§ã³ããã³ãŠãŒã¶ãŒãªããžã§ã¯ããæ£ããåæåããåŸã«ã»ããã¢ããã
append_sidïŒ$ urlã$ params = falseã$ is_amp = trueã$ session_id = falseïŒ -ãªã³ã¯ã圢æããããã«åŒã³åºãããŸãïŒã»ãã·ã§ã³èå¥åã远å ããŸãïŒ;
$ template-> displayïŒ$ handleã$ include_once = trueïŒ -ïŒãŸã ã³ã³ãã€ã«ãããŠããªãïŒãã³ãã¬ãŒãã®åºåã®çŽåã«åŒã³åºãããŸã;
exit_handlerïŒïŒ -phpBB3ã³ãŒãå®è¡ã®æåŸã«åŒã³åºãããŸãã
æ³šïŒ $ template-> displayã䜿çšãããã©ããã¯ã $ templateã®3çªç®ã®åŒæ°ïŒ$ templateãªããžã§ã¯ããžã®åç
§ïŒãåãããšãã§ããŸããããã¯ãã°ããŒãã«ãªãã³ãã¬ãŒãã®ä»£ããã«äœ¿çšã§ããŸããphpBB3ãã¢ããªã±ãŒã·ã§ã³ã«çµ±åããå Žåã¯ã宿°ã䜿çšã§ããŸãã
PHPBB_MSG_HANDLER ïŒã¡ãã»ãŒãžãã³ãã©ãŒã®äžæžãïŒ;
PHPBB_DB_NEW_LINK ïŒsql_connectã®new_linkãã©ã¡ãŒã¿ãŒãäžæžãïŒ;
PHPBB_ROOT_PATH ïŒ$ phpbb_root_pathãäžæžãïŒ;
PHPBB_ADMIN_PATH ïŒ$ phpbb_admin_pathãäžæžãïŒ;
PHPBB_USE_BOARD_URL_PATH ïŒ$ phpbb_root_pathã®ä»£ããã«åçã«generate_board_urlïŒïŒã䜿çšããŸãïŒã
宿°
PHPBB_USE_BOARD_URL_PATHã trueã«èšå®ãããŠããå ŽåãphpBBã¯ã¢ããããŒãããããã¹ãŠã®ç»åã«å¯ŸããŠgenerate_board_urlïŒïŒïŒã¹ã¯ãªãããã¹ãå«ããã©ãŒã©ã ãžã®ãªã³ã¯ãè¿ããŸãïŒã䜿çšããŸãã ãã®å®æ°ã¯ãã¡ã€ã«å
ã«ãããŸãã
/includes/session.php-ãŠãŒã¶ãŒ:: imgïŒïŒ
/includes/functions_content.php-smiley_text ïŒïŒ
ãŸãããã³ãã¬ãŒã倿°ã®ãã¹ã倿ŽããŸãã
{T_THEME_PATH}-ã¹ã¿ã€ã«/ xxx /ããŒã
{T_TEMPLATE_PATH}-ã¹ã¿ã€ã«/ xxx /ãã³ãã¬ãŒã
{T_SUPER_TEMPLATE_PATH}-ã¹ã¿ã€ã«/ xxx /ãã³ãã¬ãŒã
{T_IMAGESET_PATH}-ã¹ã¿ã€ã«/ xxx / imageset
{T_IMAGESET_LANG_PATH}-ã¹ã¿ã€ã«/ xxx / imageset / yy
{T_IMAGES_PATH}-ç»å/
{T_SMILIES_PATH}-$ config ['smilies_path'] /
{T_AVATAR_PATH}-$ config ['avatar_path'] /
{T_AVATAR_GALLERY_PATH}-$ config ['avatar_gallery_path'] /
{T_ICONS_PATH}-$ config ['icons_path'] /
{T_RANKS_PATH}-$ config ['ranks_path'] /
{T_UPLOAD_PATH}-$ config ['upload_path'] /
{T_STYLESHEET_LINK}-ã¹ã¿ã€ã«/ xxx /ããŒã/ stylesheet.cssïŒCSSãåçã«çæãããå Žåã¯style.phpãžã®ãªã³ã¯ïŒ
æ°ãããã³ãã¬ãŒã倿°{BOARD_URL}ã¯ãããŒãURLãšã¹ã¯ãªãããã¹ã§æ§æãããŸãã
2.ã¯ã©ã¹é¢æ°ããã³ã¡ãœããã§ã®ãã©ããã®äœ¿çšãèš±å¯ããŸã
次ã®äŸã¯ãphpBB3ãçµã¿èŸŒã¿ãã©ããã·ã¹ãã ã䜿çšããæ¹æ³ã説æããŠããŸãã ç¬èªã®ãã©ãããç»é²ããããšã«èå³ããããããããŸãããããã®ã³ãŒãããã¢ã³ã¹ãã¬ãŒã·ã§ã³ãããšããã©ããã·ã¹ãã ãããããçè§£ããã®ã«åœ¹ç«ã¡ãŸã...
ãŸãããã®äŸã¯ããã©ãããã€ã³ã¿ãŒã»ããã§ããããã«ããå Žåã«å¿
èŠãªã³ãŒãã颿°ã«åãèŸŒãæ¹æ³ã瀺ããŠããŸãã
function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }function my_own_function ( $my_first_parameter , $my_second_parameter ) { global $phpbb_hook ; if ( $phpbb_hook -> call_hook ( __FUNCTION__ , $my_first_parameter , $my_second_parameter ) ) { if ( $phpbb_hook -> hook_return ( __FUNCTION__ ) ) { return $phpbb_hook -> hook_return_result ( __FUNCTION__ ) ; } } [ ] }
äžèšã®call_hook颿°ã¯ãåžžã«é¢æ°ã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠåŒã³åºãå¿
èŠããããŸãã
ãããŠãã®äŸã¯ãã¯ã©ã¹ã¡ãœããããã©ãããã€ã³ã¿ãŒã»ããããæ¹æ³ã瀺ããŠããŸã...
- ã¯ã©ã¹ my_hookable_object
 - {
 - 颿° hook_me ïŒ $ my_first_parameter ã $ my_second_parameter ïŒ
 - {
 - ã°ããŒãã« $ phpbb_hook ;
 - if ïŒ $ phpbb_hook- > call_hook ïŒ array ïŒ __CLASS__ ã __FUNCTION__ ïŒ ã $ my_first_parameter ã $ my_second_parameter ïŒ ïŒïŒ
 - {
 - if ïŒ $ phpbb_hook- > hook_return ïŒ array ïŒ __CLASS__ ã __FUNCTION__ ïŒ ïŒ ïŒïŒïŒ
 - {
 - return $ phpbb_hook- > hook_return_result ïŒ array ïŒ __CLASS__ ã __FUNCTION__ ïŒ ïŒ ;
 - }
 - }
 - [ã³ãŒãã¯ãã¡ã]
 - }
 - }
 
ããã§ã®å¯äžã®éãã¯ãæåã®ãã©ã¡ãŒã¿ãŒã®å®çŸ©æ¹æ³ã§ãã 颿°ã®å Žåãããã¯__FUNCTION__宿°ã®ã¿ã§ãããã¡ãœããã®å Žåãé
åé
åïŒ__ CLASS __ã__ FUNCTION__ïŒã§ãã PHP4ã§ã¯ã__ CLASS__宿°ã¯åžžã«å°æåã§ã¯ã©ã¹åãè¿ããŸãã
ããŠãphpBBã«ã¯ããã©ãããã€ã³ã¿ãŒã»ããã§ããäºåå®çŸ©é¢æ°ããããŸããããããã䜿çšå¯èœã«ããæ¹æ³ïŒãããã£ãŠãä»ã®ãŠãŒã¶ãŒããã©ãããã€ã³ã¿ãŒã»ããã§ããããã«ããæ¹æ³ïŒã¯ïŒ ããã«ã¯
add_hookïŒïŒã¡ãœããããããŸãïŒ
- //ç¬èªã®é¢æ°ã远å ããŸã
 - //ãã©ããããã£ãã
 - $ phpbb_hook- > add_hook ïŒ 'my_own_function' ïŒ ;
 - //ç¬èªã®ã¡ãœããã远å ããŸãã
 - //ãã©ããããã£ãã
 - $ phpbb_hook- > add_hook ïŒ array ïŒ 'my_hookable_object' ã 'hook_me' ïŒ ïŒ ;
 
add_hookïŒïŒãšåããã©ã¡ãŒã¿ãŒã§
$ phpbb_hook-> remove_hookïŒïŒãåŒã³åºãããšã§ã颿°/ã¡ãœããã§ãã©ãããã€ã³ã¿ãŒã»ããããæ©èœãåé€ããããšãã§ããŸãã ããã¯ããã©ãããåŒã³åºããªãããã«ããå Žåã«äŸ¿å©ã§ãã
3.ãã©ãããã®ã³ã°
次ã«ãåŒã³åºããã颿°ã®å®çŸ©ã«ç§»ããŸãããã ãããè¡ãã«ã¯ãappend_sidïŒïŒé¢æ°ãäŸãšããŠïŒãã®é¢æ°ã¯ããã©ã«ãã®ãã©ããã§äœ¿çšã§ããŸãïŒã2ã€ã®ã¯ã©ã¹ãšé¢æ°ãäœæããŸãïŒ
- class my_append_sid_class {
 - //颿°
 - function my_append_sid ïŒ ïŒ $ hook ã $ url ã $ params = false ã $ is_amp = true ã $ session_id = false ïŒ {
 - //åã®ãã©ããã®å¯èœãªçµæãââååŸããŸã
 - $ result = $ hook- > previous_hook_result ïŒ 'append_sid' ïŒ ;
 - return $ result [ 'result' ] ã ã<br />ãããŠç§ã¯2çªç®ã§ãããã ;
 - }
 - }
 - //å¥ã®ã¯ã©ã¹
 - class my_second_append_sid_class {
 - function my_append_sid ïŒ ïŒ $ hook ã $ url ã $ params = false ã $ is_amp = true ã $ session_id = false ïŒ {
 - //åã®ãã©ããã®å¯èœãªçµæãââååŸããŸã
 - $ result = $ hook- > previous_hook_result ïŒ 'append_sid' ïŒ ;
 - echo $ result [ 'result' ] ã ã<br />ãããŠç§ã¯3çªç®ã§ããã ;
 - }
 - }
 - //éåžžã®é¢æ°
 - function my_append_sid ïŒ ïŒ $ hook ã $ url ã $ params = false ã $ is_amp = true ã $ session_id = false ïŒ {
 - //åã®ãã©ããã®å¯èœãªçµæãââååŸããŸã
 - $ result = $ hook- > previous_hook_result ïŒ 'append_sid' ïŒ ;
 - return 'ç§ã¯æåã«åŒã°ãã' ;
 - }
 - // 2çªç®ã®ã¯ã©ã¹ã®åæå
 - $ my_second_append_sid_class = new my_second_append_sid_class ïŒ ïŒ ;
 
å¿
ã1ã€ã®äŸå€ãé€ããŠãã©ãããããã¯ãã颿°ã«å¯ŸããŠå®çŸ©ãããŠãã颿°ã«åããã©ã¡ãŒã¿ãŒã远å ããŠãã ãããæåã®ãã©ã¡ãŒã¿ãŒã¯åžžã«ïŒ$ hookã§ãããæäœå¯èœãªããã¯ãªããžã§ã¯ããžã®åç
§ã§ãã
ããã§ã 
$ phpbb_hook-> registerïŒïŒã¡ãœããã䜿çšããŠããã©ããã1ã€ãã€ç»é²ããŸãã
- //ããã§ãappend_sid颿°ã®ã代æ¿ããé çªã«ç»é²ããŸã...
 - //颿°ãç»é²ããŸãïŒæåã«åŒã³åºãããŸãïŒ
 - $ phpbb_hook- > register ïŒ 'append_sid' ã 'my_append_sid' ïŒ ;
 - //æåã®ã¯ã©ã¹ãç»é²ããŸã
 - $ phpbb_hook- > register ïŒ 'append_sid' ã array ïŒ 'my_append_sid_class' ã 'my_append_sid' ïŒ ïŒ ;
 - // ..ããã³2çªç®ã®ã¯ã©ã¹
 - $ phpbb_hook- > register ïŒ 'append_sid' ã array ïŒ ïŒ $ my_second_append_sid_class ã 'my_append_sid' ïŒ ïŒ ;
 
ãã®äŸã§ã¯ãç¬èªã®é¢æ°ã匷å¶çã«ã€ã³ã¿ãŒã»ããããããšãã§ããŸãã
- // phpbbã§ãã£ããããããã©ãããç»é²ããŸã
 - $ phpbb_hook- > register ïŒ 'append_sid' ã 'my_own_append_sid' ïŒ ;
 - //ãã©ãããååãã颿°ã远å ããŸã
 - $ phpbb_hook- > add_hook ïŒ 'my_own_append_sid' ïŒ ;
 - //颿°ã«ãã£ãŠã€ã³ã¿ãŒã»ããããããã©ãããç»é²ããŸã
 - $ phpbb_hook- > register ïŒ 'my_own_append_sid' ã 'also_my_own_append_sid' ïŒ ;
 
ç¹æ®å å·¥/ãã§ãŒã³
ããã¯ç»é²ã¡ãœããã¯ãç¹å¥ãªé£éã¢ãŒããæ±ºå®ããããã«3çªç®ã®åŒæ°ãåãå
¥ããããšãã§ããŸãã å€ã¯ã 
first ã 
last ã 
standaloneãåãããšãã§ããŸãã
$ phpbb_hook-> registerïŒ 'append_sid'ã 'my_own_append_sid'ã 'first'ïŒã¯ããã§ãŒã³ã®å
é ã§ã®é¢æ°åŒã³åºããä¿èšŒããŸãã æåã®ãããã¯å
ã§è€æ°ã®é¢æ°ãåŒã³åºãããšãã§ããŸã-ããã§ã¯
FIFOã®åçã䜿çšãããŠããŸãã
$ phpbb_hook-> registerïŒ 'append_sid'ã 'my_own_append_sid'ã 'last'ïŒã¯ããã§ãŒã³ã®æåŸã§ã®é¢æ°åŒã³åºããä¿èšŒããŸãã åŸè
å
ã®è€æ°ã®é¢æ°ã®åŒã³åºããå¯èœã§ã-ããã§ã¯FIFOã®åçã䜿çšãããŠããŸãã
$ phpbb_hook-> registerïŒ 'append_sid'ã 'my_own_append_sid'ã 'standalone'ïŒã¯ãç¹å®ã®é¢æ°ã®ã¿ãåŒã³åºãããããã«ããŸãã ä»ã®ãã¹ãŠã®æ©èœã¯ãã§ãŒã³ããåé€ãããä»ã®æ©èœã¯ãã®åŸãã§ãŒã³ã«è¿œå ãããŸããã 2ã€ã®ã¢ããªã±ãŒã·ã§ã³ãã¹ã¿ã³ãã¢ãã³ã¢ãŒããåãæ¿ããããšãããšãPHPéç¥ã衚瀺ããã2çªç®ã®é¢æ°ã¯ç¡èŠãããŸãã
ãªããžã§ã¯ãã®ãã©ããã®è§£æ±º
ãªããªã ãã©ããã·ã¹ãã ã¯åæåããããªããžã§ã¯ããåºå¥ã§ããŸããããã¯ã©ã¹èªäœã§ã®ã¿åäœãããããã³ãŒãã¬ãã«ã§ããã解決ããå¿
èŠããããŸãã
å¯èœãªæ¹æ³ã®1ã€ã¯ãããããã£ã䜿çšããããšã§ãã
- ã¯ã©ã¹ my_hookable_object {
 - 颿° blabla ïŒ ïŒ
 - {
 - }
 - }
 - ã¯ã©ã¹ my_hookable_object2 㯠my_hookable_objectãæ¡åŒµããŸã
 - {
 - var $ call_hook = true ;
 - 颿° hook_me ïŒ $ my_first_parameter ã $ my_second_parameter ïŒ
 - {
 - if ïŒ $ this- > call_hook ïŒ
 - {
 - ã°ããŒãã« $ phpbb_hook ;
 - if ïŒ $ phpbb_hook- > call_hook ïŒ array ïŒ __CLASS__ ã __FUNCTION__ ïŒ ã $ my_first_parameter ã $ my_second_parameter ïŒ ïŒïŒ
 - {
 - if ïŒ $ phpbb_hook- > hook_return ïŒ array ïŒ __CLASS__ ã __FUNCTION__ ïŒ ïŒ ïŒïŒ
 - {
 - return $ phpbb_hook- > hook_return_result ïŒ array ïŒ __CLASS__ ã __FUNCTION__ ïŒ ïŒ ;
 - }
 - }
 - }
 - ãããã¯ãããŠããªããã è¿ã ;
 - }
 - }
 - 颿°ããã¯ïŒ ïŒ $ hook ã $ first ã $ second ïŒ
 - {
 - return 'hooked' ;
 - }
 - $ first_object = new my_hookable_object2 ïŒ ïŒ ;
 - $ second_object = new my_hookable_object2 ïŒ ïŒ ;
 - $ phpbb_hook- > add_hook ïŒ array ïŒ 'my_hookable_object2' ã 'hook_me' ïŒ ïŒ ;
 - $ phpbb_hook- > register ïŒ array ïŒ 'my_hookable_object2' ã 'hook_me' ïŒ ã ' hooking ' ïŒ ;
 - // $ first_objectã®ãã©ãããåŒã³åºããªãã§ãã ãã
 - $ first_object- > call_hook = false ;
 - echo $ first_object- > hook_me ïŒ 'first' ã 'second' ïŒ ã '<br />' ;
 - echo $ second_object- > hook_me ïŒ 'first' ã 'second' ïŒ ã '<br />' ;
 - //åºåïŒ
 - 倢äžã«ãªããªã
 - 倢äž
 
å¥ã®å¯èœæ§ã¯ã颿°å€æ°ã䜿çšããããšã§ãïŒå€æ°ããã©ããã«æž¡ããšãã«çç¥ã§ããŸãïŒã
- ã¯ã©ã¹ my_hookable_object {
 - 颿° blabla ïŒ ïŒ
 - {
 - }
 - }
 - ã¯ã©ã¹ my_hookable_object2 㯠my_hookable_objectãæ¡åŒµããŸã
 - {
 - 颿° hook_me ïŒ $ my_first_parameter ã $ my_second_parameter ã $ hook_me = true ïŒ
 - {
 - if ïŒ $ hook_me ïŒ
 - {
 - ã°ããŒãã« $ phpbb_hook ;
 - if ïŒ $ phpbb_hook- > call_hook ïŒ array ïŒ __CLASS__ ã __FUNCTION__ ïŒ ã $ my_first_parameter ã $ my_second_parameter ïŒ ïŒïŒ
 - {
 - if ïŒ $ phpbb_hook- > hook_return ïŒ array ïŒ __CLASS__ ã __FUNCTION__ ïŒ ïŒ ïŒïŒ
 - {
 - return $ phpbb_hook- > hook_return_result ïŒ array ïŒ __CLASS__ ã __FUNCTION__ ïŒ ïŒ ;
 - }
 - }
 - }
 - ãããã¯ãããŠããªããã è¿ã ;
 - }
 - }
 - 颿°ããã¯ïŒ ïŒ $ hook ã $ first ã $ second ïŒ
 - {
 - return 'hooked' ;
 - }
 - $ first_object = new my_hookable_object2 ïŒ ïŒ ;
 - $ second_object = new my_hookable_object2 ïŒ ïŒ ;
 - $ phpbb_hook- > add_hook ïŒ array ïŒ 'my_hookable_object2' ã 'hook_me' ïŒ ïŒ ;
 - $ phpbb_hook- > register ïŒ array ïŒ 'my_hookable_object2' ã 'hook_me' ïŒ ã ' hooking ' ïŒ ;
 - echo $ first_object- > hook_me ïŒ 'first' ã 'second' ã false ïŒ ã '<br />' ;
 - echo $ second_object- > hook_me ïŒ 'first' ã 'second' ïŒ ã '<br />' ;
 - //åºåïŒ
 - 倢äžã«ãªããªã
 - 倢äž
 
4.çµæãè¿ã
颿°ãã€ã³ã¿ãŒã»ããããã颿°ã§çµæãè¿ãããå®è¡ãç¶ç¶ããããæç¢ºã«æ±ºå®ããå¿
èŠããããŸãã ããã¯ã¢ããªã±ãŒã·ã§ã³ã®å¿
èŠæ§ãåå ã§ããå¯èœæ§ããããçµæãšããŠããã©ããã«ãã£ãŠã€ã³ã¿ãŒã»ããããã颿°ãçµæãè¿ãå Žåã«ã®ã¿ã颿°ã¯çµæãè¿ããŸãã
ã±ãŒã¹No. 1-颿°å®è¡ã®çµæãè¿ã
次ã®é¢æ°ããã©ããããµããŒããããšæ³åããŠãã ããã
- 颿° append_sid ïŒ $ url ã $ params = false ã $ is_amp = true ã $ session_id = false ïŒ {
 - ã°ããŒãã« $ _SID ã $ _EXTRA_URL ã $ phpbb_hook ;
 - //ãã©ããã䜿çšããéçºè
ã¯è¡ãå¿
èŠããããŸã
 - //ã°ããŒãã«$ _SIDããã³$ _EXTRA_URLèªäœ
 - //æ©èœããããããå·§ã¿ã«ç®¡çããŸãã
 - //ã»ãšãã©ã®ã³ãŒãã¯ããããã³ããŒã§ããŸã
 - if ïŒ $ phpbb_hook- > call_hook ïŒ __FUNCTION__ ã $ url ã $ params ã $ is_amp ã $ session_id ïŒ ïŒïŒ {
 - if ïŒ $ phpbb_hook- > hook_return ïŒ __FUNCTION__ ïŒ ïŒ
 - {
 - return $ phpbb_hook- > hook_return_result ïŒ __FUNCTION__ ïŒ ;
 - }
 - }
 - [ ... ]
 - }
 
ããã§é¢æ°ã§ãã çµæãè¿ããçŽåŸã«ã 
append_sidïŒïŒé¢æ°
ãçµæ
ãè¿ããŸãã
- //ã€ã³ã¿ãŒã»ããããã颿°
 - 颿° my_append_sid ïŒ ïŒ $ hook ã $ url ã $ params = false ã $ is_amp = true ã $ session_id = false ïŒ
 - {
 - //å¯èœãªçµæãââååŸããŸã
 - $ result = $ hook- > previous_hook_result ïŒ 'append_sid' ïŒ ;
 - return 'äœããè¿ããåŸãappend_sidïŒïŒé¢æ°ã¯ç§ã®çµæãè¿ããŸã' ;
 - }
 
åè¿°ã®é¢æ°ã®çµæãååŸããã«ã¯ã 
previous_hook_resultïŒïŒã¡ãœããã§åžžã«äœ¿çšããå¿
èŠããããŸãããã®ã¡ãœããã¯ãé
åarrayïŒ 'result' => [your result]ïŒã®é
åãè¿ããŸãã
ã±ãŒã¹2-äžè¬çã«ãç§ãã¡ã¯äœãè¿ããªã
ã¢ããªã±ãŒã·ã§ã³ãäœããè¿ãå¿
èŠããªãå Žåããããããæ¬¡ã®é¢æ°ã¯åŒãç¶ãå®è¡ãããŸãã
- 颿° append_sid ïŒ $ url ã $ params = false ã $ is_amp = true ã $ session_id = false ïŒ
 - {
 - ã°ããŒãã« $ _SID ã $ _EXTRA_URL ã $ phpbb_hook ;
 - if ïŒ $ phpbb_hook- > call_hook ïŒ __FUNCTION__ ã $ url ã $ params ã $ is_amp ã $ session_id ïŒ ïŒïŒ
 - {
 - if ïŒ $ phpbb_hook- > hook_return ïŒ __FUNCTION__ ïŒ ïŒ
 - {
 - return $ phpbb_hook- > hook_return_result ïŒ __FUNCTION__ ïŒ ;
 - }
 - }
 - [ ... ]
 - }
 - //ã€ã³ã¿ãŒã»ããããã颿°
 - 颿° my_append_sid ïŒ ïŒ $ hook ã $ url ã $ params = false ã $ is_amp = true ã $ session_id = false ïŒ
 - {
 - //å¯èœãªçµæãââååŸããŸã
 - $ result = $ hook- > previous_hook_result ïŒ 'append_sid' ïŒ ;
 - [ ... ]
 - //äžéšã®å€æ°ãäžæžãããã ãã§äœãè¿ããªããããappend_sidïŒïŒé¢æ°ã¯äœãè¿ããŸããã
 - }
 
æ³šïŒæ»ããè¿ããªããã®æ±ºå®ã¯ããã©ããã®ãã§ãŒã³ãžã®åŒã³åºãã®æåŸã«ã®ã¿è¡ãããŸãã äŸïŒ
- //ã€ã³ã¿ãŒã»ããããã颿°
 - 颿° my_append_sid ïŒ ïŒ $ hook ã $ url ã $ params = false ã $ is_amp = true ã $ session_id = false ïŒ
 - {
 - //å¯èœãªçµæãââååŸããŸã
 - $ result = $ hook- > previous_hook_result ïŒ 'append_sid' ïŒ ;
 - //倿°$ resultã«ã¯å€ãå«ãŸããŠããŸãã
 - return 'FILLED' ;
 - }
 - //ãã®é¢æ°ã¯my_append_sidïŒïŒã®åŸã«ãç»é²ããã³å®è¡ãããŸã
 - 颿° my_own_append_sid ïŒ ïŒ $ hook ã $ url ã $ params = false ã $ is_amp = true ã $ session_id = false ïŒ
 - {
 - $ result = $ hook- > previous_hook_result ïŒ 'append_sid' ïŒ ;
 - //倿°$ result㯠'FILLED'ã§åããããŸã
 - //ãããããªããªã äœãè¿ããªãå Žåãappend_sidïŒïŒé¢æ°ã¯åŒãç¶ãå®è¡ãããŸã
 - }
 - //äž¡æ¹ã®é¢æ°ãç»é²ããæ¹æ³
 - $ phpbb_hook- > register ïŒ 'append_sid' ã 'my_append_sid' ïŒ ;
 - $ phpbb_hook- > register ïŒ 'append_sid' ã 'my_own_append_sid' ïŒ ;
 
6.ãã¡ã€ã«/ã¯ã©ã¹/ã¡ãœãããåã蟌ã
äžè¬ã«ãéžæã§ããæ¹æ³ã¯2ã€ãããŸãã
1ïŒãã¡ã€ã«ã
include / hooks /ãã©ã«ããŒã«è¿œå ããŸãã ãã¡ã€ã«ã«ã¯
hook_ãã¬ãã£ãã¯ã¹ãå¿
èŠã§ãã ãã®ãã¡ã€ã«ã¯common.phpå
ã§æ¥ç¶ãããã©ãããç»é²ããããä»ã®ãã¡ã€ã«ã颿°ãæ¥ç¶ãããã§ããŸã å¿
èŠãªå Žåã«ã®ã¿ä»ã®ãã¡ã€ã«ãæ¥ç¶ããããšããå§ãããŸãïŒããšãã°ã颿°åŒã³åºãå
ïŒã
æ°ããç§»åãããã¡ã€ã«ã«phpBB3ããã¢ã¯ã»ã¹ã§ããããã«ããã«ã¯ããã£ãã·ã¥ãã¯ãªã¢ããå¿
èŠãããããšã«æ³šæããŠãã ããã
2ïŒ2çªç®ã®æ¹æ³ã¯ããã©ããçšã®ãã©ã«ããŒã«ç¹å¥ãªãã¡ã€ã«ãé
眮ãã代ããã«ãphpBB3ã³ãŒããã©ããããã人åãã§ãã ããã¯éåžžãã¢ããªã±ãŒã·ã§ã³ãã¡ã€ã«å
ã«phpBBãã¡ã€ã«ãå«ããããšã«ãã£ãŠè¡ãããŸãã ãã©ãããç»é²ããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã§é¢æ°ãäœæããå¿
èŠããããŸãã
- //ã³ã³ã¹ãã©ã¯ã¿ãŒå
ã§å®è¡ãããç§ã®é¢æ°
 - 颿° phpbb_hook_register ïŒ ïŒ $ hook ïŒ
 - {
 - $ hook- > register ïŒ 'append_sid' ã 'my_append_sid' ïŒ ;
 - }
 - [ ... ]
 
å
ã®ããã¹ã ã