Ich war vorhin mal wieder dabei ein bisschen was in PHP zu programmieren. Unter anderem eine Klasse zum Handling von Listen. Eine ähnliche Klasse hatte ich neulich im Rahmen eines Tutorenjobs schon mal in Java implementiert, insofern war es also eigentlich nur ein bisschen Schreibarbeit. Allerdings fielen mir zwei Sachen sehr unangenehm auf. Dadurch das die Funktionen von PHP nicht in irgendwelche Klassen oder Namespaces unterteilt sind war es mir weder möglich meine Klasse “List” zu nennen, noch ihr die Methode “empty” zu geben. Denn list() und empty() haben unter PHP schon eine andere Bedeutung. Das sind dann so die kleinen aber feinen Unterschiede an denen man merkt das Java mehr durchdacht und strikter umgesetzt ist.
Edit: Wobei der PHP-Interpreter ja auch einfach so schlau sein könnte zu erkennen in welchem Zusammenhang solche Begriffe gebraucht werden. Denn ein “class List { […] }” macht mit PHPs list()-Funktion irgendwie nicht allzuviel Sinn.
Permalink
Klassen- und Funktionsnamen leben in PHP durchaus in eigenen Namensräumen (ob das eine gute Idee ist ist natürlich eine andere Frage).
Das Problem ist nämlich, dass list und empty gerade KEINE Funktionen sind, sondern Schlüsselwörter (wie return, if, usw.).
Permalink
Deswegen ist list() auch unter “Array-_Funktionen_” und empty() unter “_Funktionen_ zur Behandlung von Variablen” zu finden. 😉
Nein, nein. Schlüsselwörter sind in meinen Augen was anderes.
Permalink
Ok, vielleicht hatte der allwissende M. ja doch recht. Zumindest hat mich n. gerade darauf hingewiesen, dass laut http://www.php.net/manual/de/reserved.php empty() und list() Schlüsselwörter sind. Na ja, alles ein bisschen merkwürdig wie ich finde.
Permalink
Oder dir könnte “Anmerkung: Da dies ein Sprachkonstrukt und keine Funktion ist (…)” auffallen. Aber es hat sich jetzt ja geklärt 😉