Was ist der beste Weg, um Klassenvariablen in PHP zu speichern?

8

Ich habe meine PHP-Klassenvariablen derzeit so eingerichtet:

%Vor%

Aber ich habe auch Leute gesehen, die ein einzelnes Array benutzen, um alle Variablen zu speichern:

%Vor%

Was nennst du und warum? Was sind die Vor- und Nachteile von jedem?

    
Philip Morton 13.02.2009, 15:42
quelle

5 Antworten

11

Im Allgemeinen ist das erste besser, aus Gründen, die andere bereits hier angegeben haben.

Wenn Sie Daten jedoch privat in einer Klasse speichern müssen, der Footprint der Datenelemente jedoch unbekannt ist, wird Ihr zweites Beispiel häufig mit __get () __set () - Hooks kombiniert, um zu verbergen, dass sie gespeichert werden privat.

%Vor%

Dann können Objekte dieser Klasse wie eine Instanz von stdClass verwendet werden, nur keines der von Ihnen festgelegten Elemente ist tatsächlich public

%Vor%

Diese Technik hat ihre Verwendung, aber bedenken Sie, dass __get () und __set () in der Größenordnung von 10-12 mal langsamer liegen als das Setzen öffentlicher Eigenschaften direkt.

    
Peter Bailey 13.02.2009, 15:49
quelle
6

Wenn Sie private $data; verwenden, haben Sie gerade einen undurchdringlichen Datenblock da ... Wenn Sie sie explizit angeben, wird Ihr Leben viel einfacher, wenn Sie herausfinden, wie eine Klasse funktioniert.

Eine weitere Überlegung ist, wenn Sie eine IDE mit Autocomplete verwenden - das wird mit der 2. Methode nicht funktionieren.

    
Greg 13.02.2009 15:46
quelle
1

Wenn der Code sich wiederholt, werden die Dinge durch Arrays und (Foreach) Loops geglättet. Sie müssen entscheiden, ob sich das "Tier" -Konzept in Ihrem Code wiederholt oder nicht, oder ob der Code sich in die Eindeutigkeit jedes Mitglieds einarbeiten muss.

Wenn ich mich mehr als einmal wiederholen muss, mache ich eine Schleife.

    
tkotitan 13.02.2009 15:46
quelle
1
  • Verwenden Sie die erste Methode, wenn Sie wissen, dass Sie diese Variable benötigen.
  • Verwenden Sie die zweite Methode (eine Arraysammlung von Variablen), wenn Sie dynamische Variablen benötigen.

Sie können diese beiden Methoden kombinieren, sodass einige Variablen in Ihre Klasse fest codiert sind, während andere dynamisch sind. Die fest codierten Variablen werden gegenüber magischen Methoden bevorzugt.

    
OIS 13.02.2009 20:30
quelle
0

Ich bevorzuge die erste Methode, aus ein paar Gründen:

In einer guten IDE werden die Klasseneigenschaften angezeigt, selbst wenn sie privat / geschützt sind Es ist einfacher zu sehen, was bereits definiert wurde, was die Wahrscheinlichkeit verringert, dass Sie dieselben Informationen zweimal speichern. Wenn der sprichwörtliche Bus Sie auf dem Heimweg trifft, ist es viel einfacher für einen anderen Entwickler, Ihren Code zu lesen. Und obwohl es nicht für private var gilt, tut es das für geschützte vars, in Klassen, die diese Klasse erweitern, sollten Sie wirklich versuchen, die zweite Methode für reine Lesbarkeit zu vermeiden.

Auch, als eine Randnotiz, wähle ich fast immer geschützt über privat, es sei denn, ich habe einen sehr spezifischen Grund, es privat zu machen.

Das einzige Mal, dass ich wahrscheinlich die zweite Methode verwenden würde, wäre, wenn ich eine Sammlung von vielen Dingen aufbewahre.

    
Mainegreen 13.02.2009 18:41
quelle

Tags und Links