Co to są haki? [Zamknięte]

15

Często spotykam się z tym terminem w różnych artykułach programistycznych. Nie rozumiem jednak, czym one są i jak można z nich korzystać. Chciałem tylko wiedzieć, jaka jest koncepcja haczyków; gdyby ktoś mógł powiązać mnie z niektórymi przykładami, szczególnie w kontekście tworzenia stron internetowych, byłoby świetnie.

Rasmus
źródło
Metoda hook jest konkretną metodą w klasie abstrakcyjnej, którą można zastąpić podklasami, ale ma domyślne zachowanie w klasie abstrakcyjnej.
gal007

Odpowiedzi:

18

Moja odpowiedź dotyczy WordPressa napisanego w PHP, ale jest to ogólna mechanika programistyczna, więc nie powinna mieć większego znaczenia, mimo że w tytule pytania wstawiłeś „python”.

Dobrym przykładem użycia haków, przypadkowo przy tworzeniu stron internetowych, są haki WordPress .

Są one odpowiednio nazwane, ponieważ umożliwiają sposób „zaczepienia się” w niektórych punktach wykonania programu.

Na przykład wp_head to „akcja”, która jest emitowana podczas renderowania motywu WordPress i znajduje się w części, w której renderuje część zawartą w <head>tagach. Powiedz, że chcesz napisać wtyczkę, która wymaga dodatkowego arkusza stylów, skryptu lub czegoś, co zwykle mieści się w tych tagach. Możesz „podpiąć się” do tej akcji, definiując funkcję, która ma być wywoływana, gdy ta akcja jest emitowana. Coś jak:

add_action('wp_head', 'your_function');

your_function() może być coś tak prostego jak:

function your_function() {
    echo '<link rel="stylesheet" type="text/css" href="lol.css" />';
}

Teraz, gdy WordPress wyemituje tę akcję, wykonując coś podobnego do_action('wp_head');, zobaczy, że ta akcja your_function()została „wciągnięta” w tę akcję, więc wywoła tę funkcję ( i przekaże jej wszelkie argumenty, jeśli je podejmie, zgodnie z definicją w dokumentacji dla konkretnego haka) ).

Krótko mówiąc: Pozwala na dodanie dodatkowej funkcjonalności w określonych punktach wykonania programu poprzez „zaczepienie się” w tych punktach, w większości przypadków poprzez przypisanie wywołania zwrotnego funkcji.

Jorge Israel Peña
źródło
2

W zależności od pochodzenia osoby, która czasami pyta, odpowiedź na to pytanie może być tak prosta, jak haczyki są zwykle innym słowem dla obsługi zdarzenia, co Blaenk podał doskonałe wyjaśnienie.

Istnieją również zastosowania tego wyrażenia, gdy wstrzykujesz zdarzenie lub kod do procesu, który inaczej nie zawiera zdarzeń takich jak na przykład mole .

Rachunek
źródło
Dzięki Bill, mole wyglądają jak koncepcja .NET, która jest dla mnie całkowicie obca, czy mógłbyś wskazać mi coś pythonicznego, php lub coś bardziej ogólnego.
Rasmus
Niestety, nie używam tych dwóch na tyle, aby twierdzić, że są ekspertami, ale jeśli czytam je poprawnie, uważam, że stackoverflow.com/questions/156230/... jest podobnym pomysłem, ale jest omawiany skompilowany zestaw. Sterownik miniportu to inne miejsce, w którym czasami używana jest fraza hook. Chodzi mi o to, że terminologia „hook” może być czasem używana w inny sposób, w każdym razie w starszych technologiach MS, być może drugie użycie nie dotyczy również Pythona.
Bill