Ist es wichtig, Eigenschaften explizit in PHP zu deklarieren?

7

Ich habe ein Tutorial verfolgt, um eine einfache Blog-Anwendung in PHP zu schreiben, und habe die Klassen in diesem Tutorial so modifiziert, dass sie zusätzliche Fähigkeiten haben. Die Änderung dieser sehr blanken App hat mir ein besseres Verständnis davon vermittelt, wie PHP funktioniert, aber ich habe eine interessante Situation durchgespielt.

Eine der Klassen in meinem Projekt hat etwa ein halbes Dutzend Klasseneigenschaften wie public $id, public $author, public $post . Diese Eigenschaften werden am Anfang dieser Klasse deklariert, aber ich finde, dass, wenn ich alle bis auf eine dieser Eigenschaften entferne, die App immer noch korrekt funktioniert.

Ist es falsch, eine Eigenschaftsdeklaration wie public $datePosted vom Anfang einer Klasse zu entfernen, wenn diese Klasse dieser Eigenschaft immer noch Variablen wie folgt zuweist: $this->datePosted = $someVariableName;

    
somas1 16.09.2009, 14:52
quelle

4 Antworten

12

Wenn Sie versuchen, auf eine Klasseneigenschaft zuzugreifen, die nicht deklariert wurde, gibt PHP eine Notiz aus:

%Vor%
  

Notice: Undefined property: Foo::$baz in blah.php on line 4

Wenn du zuerst einen Wert festlegst ( $fu->baz = 'blah' ), wird es sich nicht beschweren, aber das ist keine gute Situation.

Sie sollten auf jeden Fall alle Ihre Klassenvariablen deklarieren (es sei denn natürlich, Sie möchten etwas Spaß mit der magische Methoden ) ...

    
nickf 16.09.2009, 15:00
quelle
8

Für jeden, der Ihren Code liest, ist es klarer, dass die Mitglieder explizit als öffentlich definiert wurden und nicht nur als Standard, weil Sie sie nicht als öffentliche Mitglieder zugewiesen haben.

Auch $this->$datePosted ist falsch, es sollte so aussehen:

%Vor%

was möglicherweise der Grund für einen Fehler ist.

    
Evernoob 16.09.2009 14:55
quelle
5

PHP ist wirklich los darüber, wie es Klassenmember-Definitionen handhabt. Sie technisch müssen sie nicht deklarieren. Aber Sie sollten , aus zwei wichtigen Gründen:

  • Leute mit intelligenten IDEs (Eclipse, Aptana, Zend Studio) werden es lieben, wenn sie den Code ihres Programmierers intellisense (automatische Vervollständigung) nutzen können, während sie mit Ihren Klassen arbeiten. Diese Funktion hilft wirklich, Tippfehler zu vermeiden. Wenn Sie Ihre Felder nicht deklarieren, hat die IDE keine Möglichkeit, die Felder der Klasse zu bestimmen.

  • Jemand, der gerade mit einer kompilierten Sprache (C ++) fertig ist, wird wahrscheinlich einen Auftragsmörder nach dir schicken, wenn er einen Mangel an richtig definierten Feldern sieht. Es ist nur eine gute Übung, sie zu deklarieren. Es gibt keinen Grund, das nicht zu tun.

brianreavis 16.09.2009 15:06
quelle
2

Wenn Sie die Deklaration entfernen und der Code diese Variable liest, bevor Sie sie schreiben, erhalten Sie einen Fehler wie

  

PHP-Hinweis: Nicht definierte Eigenschaft:   A :: $ nicht vorhanden in C: \ temp \ test.php on   Zeile 8

     

Hinweis: Nicht definierte Eigenschaft:   A :: $ nicht vorhanden in C: \ temp \ test.php on   Zeile 8

    
Vladislav Rastrusny 16.09.2009 14:59
quelle

Tags und Links