In C++ kun je (volgens mij, ik ben er niet zo bedreven in) een functie maken die oneindig veel argumenten kan slikken door iets te typen als:
<?php
public string Functie(string[] args)
{
...
}
?>

De argumenten zjin van het type string en worden in een array opgeslagen. Nu vraag ik me af of dat ook in php kan, zonder eerst de argumenten in een array te zetten en die aan de functie te geven zoals in het volgende voorbeeld.
<?php 
function Functie($args){ ... }
$args = array('string1', 'string2', 'string3');
Functie($args);
?>
Op die manier werkt het in PHP niet. Het is ook een beetje onzin om een oneindig aantal argumenten aan een functie mee te willen geven, als je ook arrays en objecten aan een functie mee kunt geven.

Je kunt in PHP wel optionele argumenten meegeven:
<?php
function mijn_functie ($arg1, $arg2 = false, $arg3 = true) {
// hier de functie-body
}
?>
Je kunt deze functie dan met 1, 2, of 3 argumenten aanroepen.
De language construct echo kan wel meerdere parameters aan:
<?php
echo 'string1', 'string2', 'string3'...
?>

Dat maakte me benieuwd of het bij functies ook kon, helaas niet dus. Toch bedankt :)
Nu je het zegt, er zijn ook PHP functies waarbij het kan, zoals unset. Toch even zoeken hoe die werken.
[edit]Misschien heb je iets aan deze pagina[/edit]
Thnx Jan, hier ga ik even mee experimenteren.
Als ik deze code van die voorbeeldpagina gebruik:
<?php
function dynamic_args() {
for($i = 0 ; $i < func_num_args(); $i++) {
echo "Argument $i = ".func_get_arg($i)."<br />";
}
}
dynamic_args("a", "b", "c", "d", "e");
?>
Dan werkt het prima! (lokaal getest)
Dit is precies wat ik zocht, weer een stapje dichter bij superelegante code
Het volgende
<?php
functie("Onderwerp", "Bericht", "email1", "email2", "email3");
?>

is voor mij in ieder geval duidelijker dan:
<?php
functie("Onderwerp", "Bericht", array("email1", "email2", "email3") );
?>
kan toch wel?
@ Webmakerij: klopt, dat hadden we inmiddels al ontdekt ;-)
@ Rolf: ik merk in de dagelijks praktijk dat ik bijna nooit functies ontwerp met meer dan vier, vijf argumenten. Als het er nog meer worden ga ik al heel snel naar een array als argument. Maar het is mooi dat PHP de mogelijkheid biedt om te doen wat jij wilt.
Het is mooi dat de mogelijkheid er is al zou ik het in dit geval toch met een array oplossen gezien je anders altijd rekening moet houden wat de eerdere argumenten betekenen.

En mocht je bij nader inzien nog een argument toe willen voegen ...

Reageren