Hook

Door Emiel Klein , 20 jaar geleden, 3.312x bekeken

Het maken van "hooks" kan een behoorlijk voordeel opleveren in schaalbaarheid en flexibiliteit van een applicatie of script. Een "hook" maakt het mogelijk (bijvoorbeeld) plugins te laden die verderop in het script het gedrag te veranderen zonder dat hiervoor code herschreven hoeft te worden.
Ook zorgt het er voor dat functionaliteit alleen veranderd daar waar het is toegestaan, namelijk de plek waar de hook uitgevoerd wordt.

De class is eenvoudig te extenden zodat je functionaliteit kunt toevoegen om zo bijvoorbeeld ook prioriteit aan callbacks mee te geven etc.

Deze class is eigenlijk een behoorlijk verbeterde versie van een class die ik hier ooit eerder eens heb gepost onder de naam "Bundel Acties".

Gesponsorde koppelingen

PHP script bestanden

  1. hook

 

Er zijn 5 reacties op 'Hook'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Tim
tim
20 jaar geleden
 
0 +1 -0 -1
Waarom bij beginners, ik snap er maar bar weinig van?
Jelmer -
Jelmer -
20 jaar geleden
 
0 +1 -0 -1
call_user_func_array kan ook als eerste argument een array met 2 strings (static call naar een klasse::method) en een array met een object en een string (call naar de method op de meegegeven instantie) dus op zich heb je call_user_method_array en de is_array controle niet eens nodig.

Verder zou ik persoonlijk add_callback een instantie van Callback laten slikken in plaats van hem intern aanmaken, omdat je dan leuke constructies kan maken met objecten die callbacks terug geven. Als je hem trouwens puur als interface zou maken (en een simpele implementatie zoals je er nu bij hebt) dan kan je ook bestaande klassen simpel aanpassen om hooks op te vullen.
Emiel Klein
Emiel Klein
20 jaar geleden
 
0 +1 -0 -1
@tim
Nou, ik zal het even voor je aanpassen :-)


@Jelmer
Bedankt voor het linkje, ziet er interessant uit. Dit zal ik later eens grondig doornemen.
Over de static call met call_user_func_array(): Indien je een callback naar bijvoorbeeld je database wilt doen, werkt het dan wel als je een static call maakt? Want in de klasse zelf is geen resource gedefinieert, die zit in de instance. Dan heb je alsnog call_user_method_array() nodig. Of zie ik dit verkeerd?
Jelmer -
Jelmer -
20 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$instantie
= new Klasse();
call_user_func_array(array($instantie, 'doeIets'), array());
?>

Deze zal doeIets op de instantie van Klasse die in $instantie zit.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Emiel Klein
Emiel Klein
20 jaar geleden
 
0 +1 -0 -1
@Jelmer
Heb het getest en inderdaad, scheelt weer een if statement. Ik heb het aangepast...

Verder heb ik ook nog eens nagedacht over wat je zei m.b.t. add_callback een instantie van Callback te laten slikken.
Het bied inderdaad leuke mogelijkheden en bij een uitbreiding ga ik dit zeker doen.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. hook

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.