PHP Objektorientierung, Sinnhaftigkeit

Weil ich da grad fleissig am lernen bin und ständig auf detailfragen stoße, möchte ich hier eine Diskussion anzetteln, über die objektorientierte Programmierweise, speziell natürlich auf PHP bezogen.

Ich finde diese art zu programmieren sehr schön und übersichtlich. Aber grade in Bezug auf PHP scripting frage ich mich manchmal warum? Denn wenn ich in einem PHP-script die Funktionen definiere, macht es eigentlich nur einen einzigen Unterschied… die Funktionen sind in class… eingebettet.

Aber ist es nicht völlig schnurz ob ich schreibe…
$result = myclass->meine_funktion($prameter1);

oder…
$result = meine_funktion($prameter1);

Die Funktionen tun 1 und dasselbe und sind so oder so in einem einzigen funktionspool1.ips.php -file gespeichert. Wo ist da jetzt wirklich ein Vorteil? außer das ich zusätzlich sogar die klasse noch instanzieren muss.
:cool::cool::cool: grübel grübel

Während ich in Java, C++, JavaScript, Delphi oft gar nicht ohne Objekte könnte, sofern nicht gerade pures C für hochoptimierte Algorithmen erforderlich ist, finde ich in PHP in einfachen Fällen fast keine wirklichen Gründe zum Objekteinsatz, abgesehen von Übersichtlichkeit. Das ändert sich dann allerdings, wenn Projekte größer werden und man viel ähnliche Objekte hat. Berühmtes Beispiel wäre hier die Datenbankklasse: Man schreibt sich die Klasse für einen Datenbanktreiber mit ordentlichen Funktionen und braucht beim Datenbankwechsel dann nur noch für die neue Datenbank eine Klasse mit den selben Funktionen schreiben und im Programm dann nur noch einen Parameter ändern. Angehem ist für den Anfang auch die Geschichte mit Constructor/Destructor. Damit kann man dann nicht mehr vergessen für etwas auch die einleitenden/abschließenden Sachen zu erledigen wie Verbindung aufbauen und beenden.

Ja, ich denke ich werd zukünftig objektorientiert schreiben, wenns auch nix wirklich bringt, aber schöner aussehen tuts allemal :rolleyes:

Ich liebe OOP. Aber für IPS Scripte ist es IMO Sinnlos und ich schreib da in der Regel ganz normal weg. Ich muss dazu aber sagen, dass meine Scripte meisst auch nur sehr kurz sind weil ich fast alles mit Delphi löse…

Toni

Hallo,
einmal in einem PHP-Skript definierte Objekte wären doch in einem
weiteren PHP-Skript (welches z.B. via Timerfunktion aufgerufen
wird) nicht verfügbar, da die Objekte nicht global sind unter IPS,
oder übersehe ich da was?
Gruss
Symconnewbie

Ich glaube du meinst die static? also das stimmt. Das heißt, die Klasse wird in jedem script neu erstellt und ist sozusagen jungfräulich. da kann nicht auf ein globales im speicher bleibendes objekt zugegriffen werden, was von einem anderen script verwendet wurde.

läuft der script ab, ist die Klasse als static definiert oder nicht, bedauerlicherweise weg vom speicher :mad:

Hallo,

das ist genau der Grund, warum OOP mit PHP für Skripte in IP-Symcon ziemlich nutzlos ist. :frowning:

Darüber hinaus leidet auch noch die Performance, da für die Abarbeitung ein höherer Aufwand erfoderlich ist.

Gruß
HJH

Hallo Hans-Joerg,

das sehe ich nicht so, Du musst schon unterscheiden. Du meinst Scripte, die nur eine Aufgabe innerhalb der Steuerung von Aktoren etc. uebernehmen. Bei komplexen Applikationen wie Webfront, WIIPS und anderen sehe ich schon grosse Vorteile durch die Verwendung von OOP.

Aber wie immer ist dies ein Thema, wo man trefflich drueber streiten kann. Aber fuer Prozessablaeufe im Rahmen der Steuerung sehe ich auch keine Notwendigkeit, erst wenn es wirklich im komplexe Anwendungen geht, wirds vorteilhaft.

Wenn paresy die virtuellen Variablen zur Verfuegung steht, hat man uebrigens ne ganze Menge an Moeglichkeiten, auch im Rahmen der OOP mehr zu mache als wie jetzt. Ist dann aber alles auch nicht ganz so einfach.

Vielleicht noch eine Bemerkung aus anderer Sicht: OOP ist keinesfalls etwas fuer Programmier-Anfaenger. Die sollten sich erstmal auf saubere einfache Programmierung mit einfachen Funktionen beschraenken.