dedlfix: Regulärer Ausdruck

Beitrag lesen

Hi!

eval(), unset(), isset() oder empty() sind ebenfalls Sprachkonstrukte und müssen wie Funktionen verwandt werden - da läuft nix ohne Klammern.
Diese sind jedenfalls wie Funktionen zu verwenden, und die Klammern gehören zum Funktionsaufruf.
da stellt sich die Frage: Was unterscheidet sie dann von Funktionen? Sie bekommen eine in Klammern stehende Parameterliste, die ein oder mehrere Elemente enthält, und sie tun etwas mit diesen Argumenten und ermitteln daraus ein eindeutig bestimmtes Ergebnis (okay, unset() ist mit Ergebnistyp void definiert). Das qualifiziert sie für mich als Funktion.

Ja, aus der Sicht sehen sie aus und verhalten sich wie Funktionen. Allerdings haben echte PHP-Funktionen noch mehr Verwendungsmöglichkeiten, wie die Verwendbarkeit als Callback, aufrufbar mit einigen der Function Handling Functions und als Variable Functions. (Das hatte suit übrigens schon erwähnt.)

echo (1,2,3) liefert einen schönen Syntaxfehler.
Ich stelle verblüfft fest: Stimmt!
Dabei hätte ich Stein und Bein geschworen, dass PHP den Komma-Operator wie C kennt: Alle Ausdrücke in der Liste der Reihe nach auswerten, und den letzten als Wert des Gesamtausdrucks zurückgeben.

Das Komma ist zwar in der Operatoren-Rangfolge enthalten, allerdings steht dort nur "many uses" als Information. Als Parametertrenner im Funktionskopf dürfte es nach meinem Dafürhalten nicht als Operator zählen (so wie ; auch nicht als Operator zählt). Die einzige andere Anwendung, die mir einfällt wäre bei for, um mehrere Ausdrücke je expr{1..3} ausführen zu können. Da müsste das Komma als Operator zählen, obwohl es sich für mich nicht so anfühlt, sondern eher wie ein Syntaxbestandteil à la ;

Lo!