Що таке гачки? [зачинено]


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-концепція, яка мені абсолютно чужа, чи не могли б ви вказати мені на щось пітонічне чи php чи щось більш загальне.
Расмус

На жаль, я не використовую цих двох для того, щоб вимагати експертизи, але якщо я читаю це правильно, я вважаю, що stackoverflow.com/questions/156230/… обговорюється подібна ідея, але кроти можуть підключити складений збір. Водій мініпорту - це ще одне місце, де іноді використовується гакова фраза. Моя думка полягала в тому, що термінологію "гачок" іноді можна використовувати іншим способом, у старих MS-технологіях все одно, можливо, друге використання не стосується і пітона.
Білл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.