J'ai essayé de chercher sur Google, mais je n'ai trouvé aucun bon tutoriel ou article.
Vous n'avez probablement rien trouvé car PHP n'a pas de concept de hooks.
Les hooks sont un type de fonction que vous pouvez connecter (ou hook ) à un système existant pour étendre ses fonctionnalités. Ils ne sont pas spécifiques au langage PHP ni à aucun système. Ils peuvent également être appelés plugins, add-ons ou extensions.
Maintenant, bien que PHP n'ait pas de concept de hook, il vous permet de compiler des extensions avec le noyau PHP pour obtenir des fonctionnalités supplémentaires à utiliser dans vos scripts. Il existe de nombreuses extensions PHP groupées par défaut. Ceci est un exemple de ce que j'ai décrit ci-dessus.
Oui, les hooks ne sont pas des méthodes natives PHP. Ils sont utilisés pour étendre les fonctionnalités à partir du noyau d'un framework.
Vous pouvez implémenter le modèle observateur avec certains des nouveaux éléments SPL, tels que SplObserver()
.
Cela facilite le travail.
Vous pouvez émuler des points d'ancrage dans votre propre projet PHP:
1) Créer et inclure la classe suivante:
class Hooks {
private static $actions = array(
'ev_after_user_create' => array(),
'ev_after_user_profile_update' => array()
);
public static function apply($hook, $args = array()) {
if (!empty(self::$actions[$hook])) {
foreach (self::$actions[$hook] as $f) {
$f($args);
}
}
}
public static function add_action($hook, $function) {
self::$actions[$hook][] = $function;
}
}
Définissez le nom des hameçons que vous préférez.
2) Vous pouvez maintenant utiliser des points d'ancrage dans votre code, par exemple, après avoir créé un nouvel utilisateur (exemple):
//here is going any code which creates new user
//hooks
Hooks::apply('ev_after_user_create', array('user_id' => $new_user_id));
3) Définir les actions de crochets de la manière suivante:
Hooks::add_action('ev_after_user_create', function($args) {
if (Router::$application === 'front') {
require_model('users-data');
$ud = new MUsersData(8);
$ud->update_data($ud->create_page(), $args, 'id');
}
});
Tout code d'actions de crochets doit être défini AVANT le code où cette action est nécessaire !