FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

PHP (5) Objektorientierung

PHP (5) Objektorientierung 2007-06-08 16:36
Anonymer Beobachter = Spanner?
Ich denke mal die Objektorientierung ist so ganz mit Version 5 gekommen,

ich mache mich damit jetzt innerhalb von PHP vertraut…
Einige kleine Fragen:

Sind die Exemplarvariablen der Klassen in PHP automatisch private ?

Machen getter und setter in PHP Sinn?
Ich frage, weil ich beispiele sehe in denen nur ein Setter existiert und dann per -> Operator auf die var zugegriffen wird - für mich macht das so nicht viel sinn…

RE: PHP (5) Objektorientierung 2007-06-08 16:51
Popcorn
Sind die Exemplarvariablen der Klassen in PHP automatisch private ?
Nein, public. Aber PHP 5 verlangt ohnehin, dass Du das zutreffende Attribut voranstellst. Var gilt als deprecated, ist aber halt noch nötig, wenn es zu PHP 4 kompatibel sein soll.

Solche Getter und Setter müssen für sich genommen auch keinen Sinn machen, tun sie allein auch meist nicht direkt. Aber im OO-Gesamtwerk, wenn Du etwa ein Objekt an ein anderes übergibst, wird das sehr nützlich.

RE: PHP (5) Objektorientierung 2007-06-08 17:31
Anonymer User
..ja deine Sicht zu den Gettern und Settern ist… algemein - ich meine ich würde deiner Aussage schon etwa zustimmen - nur, wann macht ein setter alleine Sinn?

Wenn ich meine examplar var auch innerhalb der Klasse nur per setter verändere aber trotzdem jeder direkt reinschauen kann (ohne get) ? Wie lässt sich das mit dem OOP-Konzept vereinen bzw. warum mache ich mir die Mühe eines Setters?

RE: PHP (5) Objektorientierung 2007-06-08 17:47
Popcorn
Also innerhalb der Klasse ist das relativ egal, es sei denn, get und set prüfen und verarbeiten noch irgendwelche Sachen. Da kannst Du aber sonst auch problemlos mit $this->var arbeiten. Hat mir bisher zumindest noch niemand erzählt, dass das bei OO anders sein soll.

RE: PHP (5) Objektorientierung 2007-06-08 17:55
tekai
die getter & setter bieten jeder für sich mehr Kapselung. Darum ist set auch ohne get schon sinnvoll.

OOP heißt imho nicht das sich alle Objekte komplett gegen Zugriffe von aussen abzuschotten haben indem sie nur Methoden anbieten, das schafft höchstens frust beim debuggen, weil das System nur mit den Situationen zurecht kommt an die der Entwickler gedacht hat.
OOP ist mehr ein Protokoll dem folgen kann, wenn eine passende Methode da ist sollte man diese auch benutzen statt mit dem Protokoll zu brechen und selbst im Objekt herumzustochern, manchmal ist es aber nötig (zb. auch reverse engineering).

Nice to read (aber lang…): Parabola von Mr. Yegge

RE: PHP (5) Objektorientierung 2007-06-13 18:31
Anonymer User
Wie sieht es mit Konstruktoren aus?
Sind die in php üblich oder kann ich Objecte aus dem stehgreif zaubern?

RE: PHP (5) Objektorientierung 2007-06-13 18:34
Popcorn
Konstruktoren sind notwendig. In PHP5 nennt man die Konstruktoren am besten __construct, so sind spätere Namensänderungen leichter. Mir ist aber auch nicht klar, wie es anders funktionieren sollte. Irgendwie muss ja erst mal ein Objekt der Klasse erschaffen werden.

RE: PHP (5) Objektorientierung 2007-06-13 21:21
joda_der_weise
Es gibt in PHP5 so genannte "magische Funktionen".
Dazu gehören:

__construct()
__destruct()
__clone()
__autoload()
__get()
__set()

Das Erzeugen eines Objektes geht auch auf einer Klasse ohne Konstruktor, da dann ein leerer Konstruktor angenommen wird. Der eigentlich Konstruktor ist in PHP5 lediglich mit __construct() gekennzeichnet und hat als gegenpart __destruct()