2017-05-05 1 views
0

Ich habe keine bessere Klarheit nach einer langen Suche über, mit dem Schlüsselwort public in einer __constructor Funktion in einer PHP-Klasse.Funktion Deklaration in einer Klasse für __constructor ohne das Schlüsselwort public in PHP

  1. Leute sagen __constructor selbst ist standardmäßig öffentlich. Also muss ich nicht erwähnen wie public.
  2. Wird es keine Änderung geben, wenn ich erwähne oder nicht als public in public function __constructor in PHP?
  3. Was ist die beste Praxis, eine __constructor in PHP zu deklarieren? mit oder ohne das Stichwort public?
  4. Was sind die Nachteile oder Probleme, denen ich begegnen werde, wenn ich nicht das Schlüsselwort public vor einer public function __constructor?
+2

Wenn Sie nicht das Singleton-Muster verwenden möchten .... erklären Sie einfach Ihren Konstruktor als öffentlich ..... einfache Lesbarkeit des Codes zählt weit mehr als 7 Tastenanschläge beim Schreiben Ihrer Klassen zu speichern. Warum debattiert man das überhaupt? –

Antwort

1

__constructor ist eine Methode. Die Sichtbarkeit von Methoden wird in PHP Doc wie folgt beschrieben:

Klassenmethoden können als öffentlich, privat oder geschützt definiert werden. Die Methoden , die ohne explizites Sichtbarkeitsschlüsselwort deklariert wurden, sind als public definiert.

So gibt es keine Notwendigkeit, öffentliche Sichtbarkeit für öffentliche Methoden zu schreiben.

Aber immer noch bevorzuge ich explizite Sichtbarkeiten (auch 'public') für Methoden schreiben - Code ist für alle offensichtlicher.

3

PSR-2 §4.3 liest:

Sichtbarkeit muss auf allen Methoden deklariert werden.

__constructor ist eine der "alle Methoden", so dass die Regel gilt.

+0

Beachten Sie, dass PSR-2 ein Coding Style Guide ist. Es ist eine gute Übung, sich an einen Styleguide zu halten, aber technisch besteht keine Notwendigkeit. Ihre Antwort bezieht sich auf Frage Nr. 3. –

+0

Es ist nicht wahr, dass Sichtbarkeit für alle Methoden deklariert werden muss. Es ist nur eine gute Praxis/Codierungsstil von PSR-2 – arbogastes

+0

@Arbogast Agree. Sie müssen es erklären, wenn Sie wählen, PSR-2 zu verwenden :). –

0

Standard ist öffentlich. Es ist eine gute Übung, sie immer mit einzuschließen, aber PHP4-unterstützte Klassen ohne Zugriffsmodifizierer. Daher ist es üblich, sie nicht in Legacy-Code zu verwenden.

Verwandte Themen