Какие крючки? [закрыто]

15

Я постоянно сталкиваюсь с этим термином в различных статьях. Однако я не понимаю, что это такое и как их можно использовать. Так что я просто хотел знать, какова концепция крючков; если бы кто-то мог связать меня с некоторыми примерами, особенно в контексте веб-разработки, было бы здорово.

Расмус
источник
Метод ловушки - это конкретный метод в абстрактном классе, который может быть переопределен подклассами, но он имеет поведение по умолчанию в абстрактном классе.
gal007

Ответы:

18

Мой ответ относится к WordPress, который написан на PHP, но это общая механика разработки, поэтому это не должно иметь большого значения, несмотря на то, что вы добавили «python» в заголовок своего вопроса.

Одним хорошим примером использования хуков, по совпадению в веб-разработке, являются хуки WordPress .

Они названы соответствующим образом в том смысле, что они позволяют «подключаться» к определенным точкам выполнения программы.

Так, например, wp_head - это «действие», которое генерируется при рендеринге темы WordPress, и находится в той части, где она отображает часть, которая находится внутри <head>тегов. Скажем, вы хотите написать плагин, для которого требуется дополнительная таблица стилей, скрипт или что-то, что обычно входит в эти теги. Вы можете «подключиться» к этому действию, определив функцию, которая будет вызываться при запуске этого действия. Что-то вроде:

add_action('wp_head', 'your_function');

your_function() может быть что-то так просто, как:

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

Теперь, когда WordPress излучает это действие, делая что - то вроде do_action('wp_head');, он увидит , что your_function()был «завербован в» это действие, поэтому он будет вызывать эту функцию ( и передать ему какие - либо аргументы , если он принимает любое, как определено в документации для любого конкретного крючка ).

Короче говоря: он позволяет вам добавлять дополнительные функциональные возможности в определенных точках выполнения программы, «подключаясь» к этим точкам, в большинстве случаев назначая функцию обратного вызова.

Хорхе Исраэль Пенья
источник
2

В зависимости от предыстории человека, спрашивающего иногда, ответ на этот вопрос может быть настолько простым, как ловушки, как правило, другое слово для обработчика событий, которым Бленк дал отличное объяснение.

Есть также употребления этой фразы, когда вы вводите событие или код в процесс, в котором иначе нет таких событий, как, например, родинки .

Билл
источник
Благодаря Биллу, кроты выглядят как концепция .NET, которая мне совершенно чужды, не могли бы вы указать мне на что-нибудь pythonic или php или что-то более общее.
Расмус
К сожалению, я не использую эти два достаточно, чтобы требовать экспертизы, но если я читаю это правильно, я полагаю, что stackoverflow.com/questions/156230/… - подобная обсуждаемая идея, но кроты могут перехватить скомпилированную сборку. Драйвер мини-порта - это еще одно место, где иногда используется фраза ловушки. Моя точка зрения заключалась в том, что терминология «ловушек» может иногда использоваться иным способом, в любом случае, в старых технологиях MS, возможно, второе использование не относится и к python.
Билл