Scriptorama.nl

Header image showing a keyboard, mouse, laptop and books on design patterns

Dynamisch functies aanroepen

Een van de handige dingen in PHP is de mogelijkheid om specifieke identifiers, zoals klasse namen, functies, methodes en ook variabele namen aan te roepen via een variabele. Dit maakt PHP behoorlijk flexibel. PHP heeft meerdere wegen naar Rome, dus functies kun je ook aanroepen met de functies call_user_func() en call_user_func_array().

Deze verschillende methodes hebben uiteraard zo hun eigen verschillen en dus hun eigen performance kenmerken. Matthew Weier O'Phinney en Paul Jones hebben de verschillende methodes tegen elkaar uitgezet en gemeten welke methode nu het handigst (call_user_func_array() werkt iets anders, bijvoorbeeld) maar ook het snelst zijn.

Een derde methode die niet in de artikelen wordt besproken is de mogelijkheid om functies aan te roepen via de Reflection API die sinds PHP 5 beschikbaar is:

PHP:
  1. <?php
  2.  
  3. function Scriptorama()
  4. {
  5.     echo "Hey! Bezoek http://www.scriptorama.nl !";
  6. }
  7.  
  8. $rFunc = new ReflectionFunction("Scriptorama");
  9. $rFunc->invokeArgs(array());
  10.  
  11. ?>

Reageer ook!

[...] Callbacks zijn meer dan alleen array_map(), al is dat wel een ontzettend handige functie. Je kunt natuurlijk zelf ook een callback systeem implementeren voor een functie van jezelf. Je levert een stukje performance in maar krijgt daarvoor een enorm stuk flexibiliteit terug. Met de in Dynamische functies aanroepen in PHP beschreven call_user_func_array() functie kun je met enkele regels zelf gemakkelijk een callback-enabled functie maken. Dit zou bijvoorbeeld de PHP-implementatie van array_map() zijn: PLAIN TEXT PHP: [...]

Zo kan het ook:

CODE:

Leave a comment
Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>