Warum wird bei Funktionen und Methoden in PHP nicht zwischen Groß- und Kleinschreibung unterschieden?

107

Funktionen und Methoden in PHP unterscheiden nicht zwischen Groß- und Kleinschreibung, wie im folgenden Beispiel dargestellt.

function ag()
{
    echo '2';
}

Ag();
class test {
    function clMe()
    {
        echo 'hi';
    }
}

$instance = new test;
$instance->clme();

Bei Variablen ist dies jedoch nicht der Fall. Was ist die Begründung?

user198729
quelle
161
PHP braucht keine stinkenden Gründe!
Max Shawabkeh
2
"Weil der Suppenmann es sagt." Keine Begründung, aber Verweise: php.net/manual/en/functions.user-defined.php (zwischen den Beispielen 3 und 4), php.net/manual/en/language.variables.basics.php
outis
2
class Share{ share($str){ echo $str; } } $sh = new Share(); $sh->share("string");Sie werden überrascht sein, zwei Aufrufe von function share ($ str) zu sehen. erster wegen c'tor und zweiter expliziter Aufruf aus den gleichen Gründen !!
vivek.m
1
@outis, was meinst du mit "Suppenmann"?
Pacerier
1
@outis, du meinst den "Soup Nazi" aus Seinfeld. YouTube , Wikipedia
Kevin Traas

Antworten:

98

Lassen Sie mich aus dem Interview zitieren - PHPs Schöpfer Rasmus Lerdorf

Die erste Version von PHP war eine einfache Reihe von Tools, die ich für meine Website und für einige Projekte zusammengestellt habe. Ein Tool führte einige ausgefallene Trefferprotokolle in einer mSQL-Datenbank durch, ein anderes fungierte als Formulardateninterpreter. Am Ende hatte ich ungefähr 30 verschiedene kleine CGI-Programme, die in C geschrieben waren, bevor ich es satt hatte, und kombinierte sie alle in einer einzigen C-Bibliothek. Ich habe dann einen sehr einfachen Parser geschrieben, der Tags aus HTML-Dateien auswählt und durch die Ausgabe der entsprechenden Funktionen in der C-Bibliothek ersetzt.

Der einfache Parser wuchs langsam und enthielt bedingte Tags, dann Loop-Tags, Funktionen usw. Zu keinem Zeitpunkt dachte ich, ich würde eine Skriptsprache schreiben. Ich habe dem Parser für das Ersetzen von Makros lediglich ein wenig Funktionalität hinzugefügt. Ich schrieb immer noch meine gesamte Geschäftslogik in C.

Ich habe irgendwo gelesen, dass, da sich alle eingeführten Funktionen im Wesentlichen wie Tags in einem HTML-Dokument anfühlten und bei HTML-Tags die Groß- und Kleinschreibung nicht berücksichtigt wurde, er Funktionsnamen in PHP als Groß- und Kleinschreibung auswählte. Später blieb diese Funktion in der Sprache erhalten.

Shailesh Kumar
quelle
66
Ich erinnere mich auch an ein Zitat von Rasmus auf einer PHP-Konferenz in Paris, das mehr oder weniger sagte: "Ich bin definitiv kein guter Programmierer, wenn es darum geht, strenge Codierungsregeln oder -standards zu befolgen, aber ich kann das sagen, wenn Sie sich auf die Groß- und Kleinschreibung verlassen Erkennen Sie einen Funktionsnamen von einem anderen, Sie haben ernsthafte Probleme! "
Tom Desp
1
Ist es in Zukunft immer noch unabhängig von Groß- und Kleinschreibung?
Vee
4
Deshalb verwenden PHP-Programmierer bei der Benennung ihrer Funktionen Unterstriche anstelle von Camelcase.
paperstreet7
2
@ paperstreet7 Einige tun. Die Guten nicht. Zumindest nicht mehr.
Dan
13
@dan, viele "gute" Programmierer verwenden Unterstriche. Tatsächlich gibt PSR-0 absichtlich keine Empfehlung ab. Ein guter Programmierer wählt Unterstriche oder Kamelkoffer aus und hält sich an diese Konvention. Diese Wahl zu treffen, um zu messen, ob jemand ein guter Programmierer ist, ist ziemlich dumm.
JDP
34

Ja, bei Funktions- und Methodennamen wird nicht zwischen Groß- und Kleinschreibung unterschieden.

Und ja, bei Variablennamen wird zwischen Groß- und Kleinschreibung unterschieden.

Ich bin mir nicht sicher, ob es dafür einen Grund gibt - außer, dass dies schon lange so ist und dies aus Gründen der Abwärtskompatibilität auch weiterhin der Fall ist.



Als Referenz einige Links / Zitate zu verschiedenen Seiten des Handbuchs:

Für Funktionen ( Zitat ) :

Hinweis: Bei Funktionsnamen wird die Groß- und Kleinschreibung nicht berücksichtigt, obwohl es normalerweise eine gute Form ist, Funktionen aufzurufen, wie sie in ihrer Deklaration erscheinen.

Und Methoden sind nicht viel mehr als Funktionen in Objekten - besonders wenn wir an PHP 4 und Abwärtskompatibilität denken.


Und für Variablen ( Anführungszeichen ):

Variablen in PHP werden durch ein Dollarzeichen gefolgt vom Namen der Variablen dargestellt. Der Variablenname unterscheidet zwischen Groß- und Kleinschreibung.

Und Objekteigenschaften sind nicht viel mehr als Variablen in Objekten - dieselbe Bemerkung zu PHP 4 und Abwärtskompatibilität.

Pascal MARTIN
quelle