2009-11-30 15 views
7

Was bedeutet es, wenn ein PHP-Funktionsname mit einem Unterstrich beginnt?Underscore in PHP-Funktion

zum Beispiel: __construct()

Ich weiß, was das Konstrukt bedeutet, aber ich habe andere Orte gesehen, wo die Funktion mit einem Unterstrich beginnt, oder einen Doppelstrich und ich bin nur die Bedeutung nicht sicher.

+0

Danke, jeder, für Ihre Antworten. – Stepppo

Antwort

16

Es bedeutet, dass PHP es implizit nennt.

Es

Außerdem ist es zwei Unterstrichen, nicht ein ein ‚Magic-Methode‘ genannt.

Erfahren Sie hier mehr: PHP Magic Methods

+4

Ah. Magie in PHP. Was auch immer als nächstes? –

+1

Jeder hasst PHP - und ich überlege es zu lernen :( – Amarghosh

+2

Zitat König der Löwen: "Es ist Magie in der Luft !!!" –

5

In PHP starten Funktionen mit zwei Unterstrichen haben in der Regel eine besondere Bedeutung. Aus dem Handbuch:

PHP reserviert alle Funktionsnamen beginnend mit __ als magisch. Es ist empfohlen, dass Sie nicht Funktionsnamen mit __ in PHP verwenden, es sei denn, möchten Sie einige dokumentierte magische Funktionalität.

Zum Beispiel ist __construct() eine spezielle Methode, die beim Initialisieren eines Objekts automatisch aufgerufen wird.

Se auch: http://php.net/manual/en/language.oop5.magic.php

1

Wie in anderen Antworten erwähnt, ist die Doppelstrich für "Magie" Methoden verwendet. Die Idee ist, dass der Benutzer niemals zwei Unterstriche für einen Methodennamen absichtlich verwenden würde, so dass das Risiko einer Kollision gering ist. Der Grund, warum es kein einziger Unterstrich ist, ist, glaube ich, dass der einzelne Unterstrich eine beliebte Konvention für private Methoden in den schlechten (alten) Tagen war, bevor das "private" Schlüsselwort kam, um OO-Privatheit durchzusetzen.

0

Wenn Sie im Codeigniter eine Methode in einem Controller mit einem Unterstrich starten, weiß der Router, dass der Zugriff von der URL aus nicht möglich ist.

2

Es gibt auch eine allgemeine Bezeichnung "Codierungsstil", die einen ersten Unterstrich verwendet, um anzugeben, dass Methoden oder Eigenschaften privat/geschützt sind. Ich denke, es ist ziemlich weit verbreitet.

+0

Ja, ich habe das in C# verwendet – dmeehan

Verwandte Themen