Moja odpowiedź dotyczy WordPressa napisanego w PHP, ale jest to ogólna mechanika programistyczna, więc nie powinno „To naprawdę nie ma znaczenia, mimo że w tytule pytania umieściłeś„ python ”.
Jednym z dobrych przykładów wykorzystania haków, przypadkowo w tworzeniu stron internetowych, jest WordPress „punkty zaczepienia .
Są odpowiednio nazwane, ponieważ pozwalają na„ podpięcie się ”do pewnych punktów wykonywania programu.
A więc 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ęść, która „s wewnątrz tagów <head>
. Powiedz, że chcesz napisać wtyczkę, która wymaga dodatkowego arkusza stylów, skryptu lub czegoś, co normalnie byłoby zawarte w tych tagach. Możesz „podpiąć się” do tej akcji, definiując funkcję, która ma zostać wywołana, gdy ta akcja zostanie wyemitowana. Coś takiego:
add_action("wp_head", "your_function");
your_function()
może być czymś tak prostym, jak:
function your_function() { echo "<link rel="stylesheet" type="text/css" href="lol.css" />"; }
Teraz, gdy WordPress emituje tę akcję, wykonując coś w rodzaju do_action("wp_head");
, zobaczy, że your_function()
został „podpięty” do tej akcji, więc wywoła tę funkcję ( i przekaże jej wszelkie argumenty, jeśli jakieś przyjmuje, zgodnie z definicją w dokumentacji dla każdego konkretnego przechwycenia ).
Krótko mówiąc: pozwala na dodanie dodatkowej funkcjonalności w określonych punktach wykonania programu przez „podpięcie się” do tych punktów, w większości przypadków poprzez przypisanie funkcji zwrotnej.
W zależności od pochodzenia osoby, która pyta, czasami odpowiedź na to pytanie może być tak prosta, jak haczyki to zwykle inne słowo na temat obsługi zdarzeń, które Blaenk podał doskonałe wyjaśnienie.
Istnieją również zastosowania tego wyrażenia, gdy wstrzykujesz zdarzenie o r kodu do procesu, który w przeciwnym razie nie ma zdarzeń, takich jak na przykład mole .
Komentarze
- Dzięki Bill, kret wygląda jak koncepcja .NET, która jest dla mnie całkowicie obca, czy mógłbyś wskazać mi coś pythonowego, php lub czegoś bardziej ogólnego.
- Niestety nie ' nie używaj tych dwóch w wystarczającym stopniu, aby zdobyć wiedzę, ale jeśli dobrze czytam, uważam, że stackoverflow.com/questions/156230/… to podobny pomysł, który jest omawiany, ale mole mogą podpiąć skompilowany zestaw. Sterownik miniportu to kolejne miejsce, w którym czasami używane jest wyrażenie hook. Chodziło mi bardziej o to, że terminologia " " może być używana czasami w inny sposób, w każdym razie w starszych technologiach MS, być może drugie użycie tak nie ma również zastosowania do Pythona.