Kanca nedir? [kapalı]


15

Bu terim kancaları çeşitli programlama makalelerinde karşımıza çıkıyor. Ancak ne olduklarını ve nasıl kullanılabileceklerini anlamıyorum. Bu yüzden sadece kanca kavramının ne olduğunu bilmek istedim; Birisi beni özellikle web geliştirme bağlamında bazı örneklere bağlayabilirse, bu harika olurdu.


Bir kanca yöntemi, soyut bir sınıfta alt sınıflar tarafından geçersiz kılınabilen somut bir yöntemdir, ancak soyut sınıfta varsayılan bir davranışı vardır.
gal007

Yanıtlar:


18

Cevabım PHP ile yazılmış WordPress ile ilgili, ancak bu genel bir geliştirme mekaniği, bu yüzden soru başlığınıza 'python' koymanıza rağmen, gerçekten önemli olmamalı.

Web geliştirmede rastlantısal olarak kanca kullanımının iyi bir örneği WordPress'in kancalarıdır .

Bir programın yürütülmesinin belirli noktalarına 'bağlanma' yoluna izin verdikleri için uygun şekilde adlandırılırlar.

Örneğin, wp_head , bir WordPress teması oluşturulduğunda yayılan ve <head>etiketlerin içindeki parçayı oluşturduğu kısımdaki bir 'eylemdir' . Ek bir stil sayfası, komut dosyası veya normalde bu etiketlerin içine girecek bir şey gerektiren bir eklenti yazmak istediğinizi varsayalım. Bu eylem yayıldığında çağrılacak bir işlev tanımlayarak bu eyleme 'bağlanabilirsiniz'. Gibi bir şey:

add_action('wp_head', 'your_function');

your_function() şöyle basit bir şey olabilir:

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

WordPress gibi bir şey yaparak bu eylemi yayar Şimdi, do_action('wp_head');bu göreceksiniz your_function()oldu 'çengelli içine' bu işlevi çağırmak (böylece, bu eyleme herhangi alırsa herhangi bir kanca belgelerinde tanımlandığı gibi ve ona herhangi bir bağımsız değişken geçmesi ).

Uzun lafın kısası: Bir programın yürütülmesinin belirli noktalarına, bu noktalara 'bağlanarak', çoğu durumda bir işlev geri araması atayarak ek işlevsellik eklemenizi sağlar.


2

Bazen bu sorunun cevabını soran kişinin arka planına bağlı olarak, kancaların genellikle bir olay işleyicisi için Blaenk'in mükemmel bir açıklama yaptığı başka bir kelime olduğu kadar basit olabilir.

Bu ifadenin, örneğin mol gibi olayları olmayan bir sürece bir olayı veya kodu enjekte ettiğinizde de kullanımları vardır .


Teşekkürler Bill, benler bana tamamen yabancı olan bir .NET kavramı gibi görünüyor, lütfen beni bir pitonik veya php veya daha genel bir şeye yönlendirebilir misiniz?
Rasmus

Ne yazık ki bu ikisini uzmanlık talebinde bulunmak için yeterince kullanmıyorum, ancak doğru okuyorsam stackoverflow.com/questions/156230/… tartışılan benzer bir fikir olduğuna inanıyorum , ancak moller derlenmiş bir montajı bağlayabilir. Bir miniport sürücüsü, kanca ifadesinin bazen kullanıldığı başka bir yerdir. Demek istediğim, "kanca" terminolojisinin bazen eski MS teknolojisinde başka bir şekilde kullanılabileceğiydi, belki de ikinci kullanım python için de geçerli değildir.
Bill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.