Hook mit ExtBase implementieren

Um einen Hook von Extbase aus aufzurufen, braucht man folgendes:

1) unter Classes/Hooks eine Klasse anlegen: hooksHandler.php

2) Hook-Klasse und Funktion implementieren

class Tx_MyExtension_Hooks_HooksHandler {

 /**
 * Hooktest
 * @param array $params
 * @param object $Obj
 * @return string
 */
  public function hooktest($params, &$Obj)
  {
        return "Hallo aus Extbase";
  }
}

3) Hook in ext_localconf.php registrieren

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['other_extension']['my_hook_name'][] =
    'EXT:my_extension/Classes/Hooks/hooksHandler.php:Tx_MyExtension_Hooks_HooksHandler->hooktest';

Wer den Hook auch selber implementieren möchte, hier noch der Code dazu:

if (isset($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['other_extension']['my_hook_name']) && is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['other_extension']['my_hook_name'])) {
    $_params = array(
        'param1' => $value1,
    );

    foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['other_extension']['my_hook_name'] as $_funcRef) {
         $content .= t3lib_div::callUserFunction($_funcRef, $_params, $this);
    }
}

Ein Hook kann übrigens auch eine ganz gute Möglichkeit sein, um eine alte piBased Extension mit einer neuen ExtBase Extension zu erweitern.

In ExtBase gibt es eine Alternative zu Hooks: das Signal Slot Pattern. Infos zu diesem Pattern in den Links unten. Leider hab ich es noch nicht geschafft das aus einer piBased Extension aufzurufen, wer weiß wie das geht, nur her mit den Codes!

Links zu Hooks:

Links zu Signal / Slot Pattern: