2010-12-27 8 views
2

Ich folgte einem ACL tut. welches dieses Stück Code benutzt hat.brauche Hilfe, um die Deklaration von Klasseneigenschaften zu verstehen

class ACL 
{ 
    var $perms = array(); 
    var $userID = 0; 
    var $userRoles = array(); 

    function __constructor($userID = '') 
    { 

    } 
} 

jedoch kann ich einige der oben genannten Deklarationen nicht verstehen.

a) Die Klasseneigenschaft wird mit dem Schlüsselwort var in der obigen Klasse deklariert, bei der Datenkapselung ist es nicht notwendig, dass wir öffentliche, private oder geschützte Schlüsselwörter vor der Deklaration der Eigenschaft verwenden. ist die obige Methode für PHP4 gedacht? oder wird es auch für php5 funktionieren?

b) meine IDE (Panic Coda). nimmt __construct als die korrekte Syntax für Konstruktor. Der obige Code hat __constructor verwendet. Welches ist korrekt ? Nach meinem Wissen in PHP4 sollte der Konstruktorname der Klassenname sein, wenn das der Fall ist, dann ist __construct und __constructor ein und dasselbe in PHP5?

danke

+0

Sie können weiterhin 'var' verwenden. Es ist äquivalent zu "öffentlich" und wäre daher sinnlos umzuschreiben. – mario

Antwort

7

a) Das var Schlüsselwort in der Tat wahrscheinlich für PHP 4 Kompatibilität gemeint ist. var entspricht der PHP 5 public. Es wird auch in PHP 5 funktionieren, aber da die Zeit von PHP 4 vorbei ist, ist es sicher, zu public, private und protected weiterzugehen.

b) __construct, oder der Name der Klasse für eine PHP 4 kompatible Deklaration, ist der einzig richtige Weg. __constructor() deklariert keine Konstruktormethode.

+2

Der Tutorial-Code besteht aus einer Mischung aus PHP/4 und PHP/5 objektorientierter Syntax. Diese Art disqualifiziert es als Lernressource :) –

+0

danke pekka, du bist immer zu meiner Rettung. :) –

2

In PHP4 sind alle Mitglieder und Methoden statisch und öffentlich. var ist definitiv PHP4 Syntax. In PHP5 sollten Sie public, private und protected verwenden.

__construct() ist der korrekte Methodenname für Konstruktor. Da die PHP 5.3-Methode, die denselben Namen wie die Klasse hat, nicht mehr als Konstruktor behandelt wird, handelt es sich nur um eine normale Methode.

Sie sollten auf jeden Fall ein aktuelles Tutorial finden.

1

Diese Beispielklasse enthält eine Mischung aus PHP4 und PHP5.

  • Variablen Deklarationen haben PHP4 Syntax verwendet und es ist 100% OK mit PHP5 auch.
    • In PHP5 können Sie Elementvariablen als private, public oder protected deklarieren.
    • Sogar PHP5-Funktionen können private, public oder protected sein.
    • Diese Accessor-Typen sind jedoch nicht mit PHP4 kompatibel.
  • Klassenkonstruktor hat die PHP5-Syntax verwendet, ist aber nicht mit PHP4 kompatibel.
  • Da Sie ein Lerner sind, beachten Sie bitte die Namenskonvention von PHP, benennen Sie die Skriptdatei, die Klassen enthält, mithilfe des Klassennamens. Und verwenden Sie nicht mehr als eine Klasse in derselben Skriptdatei. Alle PHP-Dateien müssen mit der Erweiterung .php enden, um die Sicherheit zu gewährleisten.

    Weiter können Sie statische Methoden in Klassen haben (mischen Sie nicht statische und dynamische Methoden innerhalb der gleichen Klasse), und sie können aufgerufen werden, ohne Objekte wie Http::DoPost(...) zu erstellen. Aber dann $this kann nicht innerhalb von statischen Methoden verwendet werden.

    +0

    Möchten Sie näher auf die Namenskonvention eingehen? Welchen Teil meinst du? –

    +0

    Variablen- und Klassennamenskonvention, z. B. Acl für den Klassennamen; $ userId anstelle von $ userID. Außerdem ist es leicht, sich an die Programmierkonventionen in jeder Sprache zu gewöhnen, wenn Sie ein Lerner sind. –

    Verwandte Themen