PHP – Kanntest du schon? – Function Array Dereferencing

Seit PHP Version 5.4 wird das sogenannte function array dereferencing unterstützt, was bedeutet es?

In einigen Programmiersprachen, darunter C#, ist es gang und gäbe function array dereferencing zu verwenden, viele wissen nur nicht wie es heißt.

Folgende kleine Funktion liefert uns einfach nur ein Array zum Testen zurück:

Wenn wir nun direkt auf das erste Element zugreifen wollen, können wir dies über function array dereferencing wie folgt tun:

Direkt hinter den Funktionsklammern können wir wie gewohnt über eckige Klammern auf eine beliebige Stelle des Arrays zugreifen.

PHP – Kanntest du schon? – Variadische Funktion/Splat Operator

Varidische Funktionen gibt es in PHP seit Version 4. Bis Version 5.5 konnte man diese aber nur über spezielle Hilfsfunktionen verwenden. Ab Version 5.5 kam der sogenannte Splat Operator dazu.

Das einfachste Beispiel für eine variadische Funktion ist die Formatierung eines Strings. In vielen Programmiersprachen gibt es bereits Funktionen dafür:

  • C: printf(“Mein Name ist %s! Ich bin %d Jahre alt.”, “Matt”, 25);
  • C#: String.Format(“Mein Name ist {0}! Ich bin {1} Jahre alt.”, “Matt”, 25);
  • Java: String.Format(“Mein Name ist %1$s! Ich bin %2$d Jahre alt.”, “Matt”, 25);
  • PHP: sprintf(“Mein Name ist %s! Ich bin %d Jahre alt.”, “Matt”, 25);
  • Genero/4gl: SFMT(“Mein Name ist %1! Ich bin %2 Jahre alt.”, “Matt”, 25);
  • weitere

Ich habe in PHP folgende einfache variadische Funktion geschrieben, die mir einen Text, wie die Funktionen oben formatieren soll, jedoch in C# Schreibweise, wobei ich die Funktion wegen der Länge SFMT nennte.

Der Splat Operator findet sich im zweiten Parameter namens $params wieder. Hier sind drei Punkte () vor den Parameter geschrieben. Dies ist der Splat Operator in PHP.

Ein Aufruf könnte wie folgt aussehen:

Wir können hier ab dem zweiten Parameter ganz normal Kommata getrennt immer mehr Parameter angeben, alle werden über den einen Parameter $params abgerufen.