it-swarm.com.de

Was ist ein Haken in PHP?

Ich habe versucht, auf Google zu suchen, konnte aber kein gutes Tutorial oder Artikel finden.

15
tasha-

Sie haben wahrscheinlich nichts gefunden, weil PHP überhaupt kein Konzept für Hooks hat.

Hooks sind eine Art von Funktion, die Sie an ein vorhandenes System anschließen (oder hook ) können, um dessen Funktionalität zu erweitern. Sie sind nicht spezifisch für die Sprache PHP oder für ein anderes System. Sie können auch als Plugins, Add-Ons oder Erweiterungen bezeichnet werden.

Obwohl PHP kein Konzept für Hooks hat, können Sie jetzt Erweiterungen zusammen mit dem PHP -Kern kompilieren, um zusätzliche Funktionen für die Verwendung in Ihren Skripten zu erhalten. Standardmäßig sind viele PHP -Erweiterungen enthalten. Dies ist ein Beispiel für das, was ich oben beschrieben habe.

32
BoltClock

Ja, Hooks sind keine nativen PHP Methoden. Sie werden verwendet, um die Funktionalität eines Frameworks zu erweitern.

Codeigniter Hooks

8
Atticus

Sie können das Beobachtermuster mit einigen der neuen SPL-Elemente implementieren, z. B. SplObserver() .

Das erleichtert die Arbeit.

3
alex

Sie können Hooks in Ihrem eigenen PHP Projekt emulieren:

1) Erstelle und beziehe die nächste Klasse ein:

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;
    }

}

Definieren Sie dort den Namen der von Ihnen bevorzugten Haken.

2) Jetzt können Sie Hooks in Ihrem Code verwenden, zum Beispiel, um smth zu machen, nachdem ein neuer Benutzer erstellt wurde (Beispiel):

//here is going any code which creates new user  
//hooks
Hooks::apply('ev_after_user_create', array('user_id' => $new_user_id));

3) Definieren Sie Hooks-Aktionen auf folgende Weise:

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');
    }
});

Jeglicher Hooks-Aktionscode sollte VOR dem Code definiert werden, wo er benötigt wird !

0
realmag777