dedlfix: bei Funktionsaufruf eine Parameter "überspringen"

Beitrag lesen

Tach!

ich frage mich gerade, wie und ob es möglich ist, bei einem Funktionsaufruf in PHP einen Parameter zu "überspringen". Ich meine damit, dass man z. B. den ersten notwendigen Parameter setzt, einen optionalen zweiten Parameter nicht setzen möchte (also auf dem Standardwert belassen möchte) und einen dritten wiederum setzen möchte.

Nein, das geht nur bei Python und seiner Möglichkeit, positionsorientierte und Keyword-Parameter zu verwenden. PHP kennt nur einen festen Bestandteil und danach optionale Parameter, die man jedoch nur von hinten her weglassen kann.

Beispiel wäre zum Beispiel ein Aufruf folgender Funktion:
string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )
Möchte man nur einen String und einen Zeichensatz übergeben, wie geht man dann vor?

Einen Zeichensatz nimmt diese Funktion gar nicht an, aber eine Kodierung (ja, da gibt es Unterschiede). Außerdem benötigt man sie üblicherweise zugunsten von htmlspecialchars() nicht. Die hat aber die gleiche Signatur. Um deine Frage zu beantworten, es geht nicht mit Weglassen und es gibt auch keinen allgemeingültigen Weg. Manchmal kann man einfach null übergeben, aber das kommt dann auch so in der Funktion an und nicht der im Funktionskopf definierte Default-Wert. Ein null ist also nur dann sinnvoll, wenn der Code in der Funktion es entsprechend auswertet.

dedlfix.