 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
21.05.2005, 22:10
|
#1
|
|
TP-Insider
Registriert seit: May 2001
|
PHP objektorientiert
Hallo Leute!
Was haltet ihr so vom objektorientiert programmieren mit PHP?
Hat vielleicht jemand ein paar gute Tutorials o.ä. auf Lager?
__________________
anrebe
SHUTdown.at - Weblog zu Computer und alles was dazugehört
|
|
|
21.05.2005, 22:30
|
#2
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Was ich davon halte?
Also, PHP ist nicht wirklich Objektorientiert -- nicht wie etwa Java (ich meine jetzt wirklich Java, nicht JavaScript) oder C++. PHP unterstützt Objekte, und zwar viel besser als JavaScript, was manchmal sehr nützlich sein kann.
In einem PHP-Skript etwa habe ich ein Objekt navlink definiert, das alle Informationen für einen Link enthält (URL, Text, ob "anklickbar" oder nicht) und die Methode write(), die den Link eigentlich schreibt. Ich hätte das anders machen können: etwa jeder Link als ein assoziatives Array. Statt
new navlink("/index.php", "Home", 0)
hätte ich dann
array(url=>"/index.php", label=>"Home", status=>0)
geschrieben; und statt
$tlink->write()
hätte ich
write($tlink)
geschrieben. Es geht beides, nur die Objekt-Lösung ist halt etwas eleganter und einfacher zu codieren.
|
|
|
21.05.2005, 22:36
|
#3
|
|
TP-Veteran
Registriert seit: Jun 2004
Ort: Stuttgart
|
Ich glaube diese Frage ist ein weites Feld. Sicherlich fehlt vieles was man gerne hätte (Überladung wäre eine wichtige Sache), aber PHP soll ja einfach bleiben, damit sich vor allem Einsteiger schnell damit zurechtfinden. Und aus dieser Sicht ist PHP5 doch ganz ok. Lediglich bezweifle ich, dass sich der Aufwand bei kleineren Projekten lohnt. Ist natürlich, wenn man mal portiert hat einfacher zu erweitern und so weiter.
Gute Tuts gibts bei www.phpfreaks.com oder www.sitepoint.com oder direkt vom Hersteller: http://de2.php.net/manual/de/language.oop5.php
|
|
|
21.05.2005, 23:23
|
#4
|
|
Guest
Registriert seit: Aug 2002
|
Zitat:
|
Zitat von rewboss
Also, PHP ist nicht wirklich Objektorientiert -- nicht wie etwa Java (ich meine jetzt wirklich Java, nicht JavaScript) oder C++.
|
C++ ist auch nicht rein objektorientiert.
|
|
|
22.05.2005, 00:26
|
#5
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Zitat:
|
Zitat von rewboss
PHP unterstützt Objekte, und zwar viel besser als JavaScript, was manchmal sehr nützlich sein kann.
|
erklärbär! Meinen Erfahrungen nach arbeitet man in JavaScript sogut wie NUR mit Objekten von daher finde ich diesen Vergleich nicht so recht angebracht, oder meinst du was Spezielles? Was kann man denn in PHP besser als in JavaScript?
Gruss
Jan
|
|
|
22.05.2005, 01:10
|
#6
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
also bewerten kann man die Sprachen nun wirklich nicht.
Alle Sprachen haben den gleichen logischen Unterbau. Jede Sprache hat ihre Spezialität.
Jede Sprache hat den Wortschatz, den man ihr mitgegeben hat, und der variiert.
Objektorientiert zu programmieren ist in allen Sprachen möglich, die Variabel Objekt ist überall vorhanden.
Methoden für ein Objekt zu definieren kann man mehr oder weniger gut in allen Sprachen.
PHP5 hat man z.B. mehr objektorientierte Funktionen verpasst, es ist dadurch aber nicht erst zur objektorientierten Sprache geworden.
Meiner Meinung fängt objektorientiertes programmieren im Kopf des Programmierers an.
|
|
|
22.05.2005, 02:03
|
#7
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Von mir dazu nur eine kurze Bemerkung:
In einschlägigen Foren liest man liest immer wieder, dass es sich wegen der "Unvollständigkeit" der OOP-Unterstützung in PHP nicht "lohne", damit hochgradig objektorientierte Programme zu entwickeln. Hör darauf nicht, es ist Unsinn (und wer es behauptet kann nicht viel Ahnung vom Thema haben).
Es stimmt zwar, dass die OOP-Implementierung in PHP (vor allem in 4.x, in 5.x hat sich einiges geändert) im Vergleich zu manchen anderen Sprachen "primitiv" ist. Das ist allerdings kein Grund, nicht wenigstens das zu nutzen, was da ist - die wichtigsten Vorteile von OOP sind in mit dieser "Grundausstattung" allemal gegeben.
Gerade bei komplexen Programmen zahlt sich OOP sehr schnell aus bzw. manches ist ohne überhaupt nicht möglich. Ich arbeite seit drei Jahren an einem Projekt, von dem ich mir gar nicht vorstellen kann, wie man es (in Form einer anderen Softwarearchitektur mit im Endeffekt vergleichbaren Funkionen) -ohne- das Konzept von Klassen und Objekten umsetzen könnte.
Die Diskussion über das Pro und Contra von OOP in PHP ähnelt m.E. stark der über CSS: Wer wirklich verstanden hat, worum es geht, weiß die Möglichkeiten zu schätzen und nutzt es konsequent, während Kritik bezüglich angeblicher Schwächen und Umständlichkeit zum allergrößten Teil auf Mangel an Wissen/Erfahrung zurückzuführen ist.
Geändert von seb (22.05.2005 um 02:08 Uhr).
|
|
|
22.05.2005, 11:08
|
#8
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Zitat:
|
Die Diskussion über das Pro und Contra von OOP in PHP ähnelt m.E. stark der über CSS: Wer wirklich verstanden hat, worum es geht, weiß die Möglichkeiten zu schätzen und nutzt es konsequent, während Kritik bezüglich angeblicher Schwächen und Umständlichkeit zum allergrößten Teil auf Mangel an Wissen/Erfahrung zurückzuführen ist.
|
Du sprichst mir aus der Seele 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
22.05.2005, 13:43
|
#9
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Zitat:
|
Zitat von Stuck Mojo
erklärbär! Meinen Erfahrungen nach arbeitet man in JavaScript sogut wie NUR mit Objekten von daher finde ich diesen Vergleich nicht so recht angebracht, oder meinst du was Spezielles? Was kann man denn in PHP besser als in JavaScript?
|
Nun, wenn man es genau nimmt, ist alles im JavaScript mit Objekten gemacht. Wenn man z.B. alert('Hallo Welt') schreibt ist das die Abkürzung für window.alert('Hallo Welt') -- d.h. alert() ist eine Methode des Window-Objekts.
Aber objektorientiert zu programmieren, das ist eine andere Sache. Vieles kann JavaScript nicht: zum Beispiel vererben ("inheritance") geht nicht. Nehmen wir ein Beispiel:
PHP-Code:
class vater{
var $name="Heinrich";
function vater($n){
$this->name = $n;
}
function sag_hallo(){
echo "<p>Hallo, ich heiße $this->name</p>";
}
}
class sohn extends vater{
function sag_hallo(){
echo "<p>Ich verrate dir meinen Namen nicht</p>";
}
}
Das geht mit JavaScript nicht, oder nicht so einfach. Zuerst müssen wir Constructor definieren:
Code:
function Vater(n){
if(n=="") this.name="Heinrich" else this.name=n;
this.sagHallo = vaterSagHallo;
}
function Sohn(n){
if(n=="") this.name="Heinrich" else this.name=n;
this.sagHallo = sohnSagHallo;
}
function vaterSagHallo(name){
document.write('Hallo, ich heiße '+this.name);
}
function sohnSagHallo(name){
document.write('Ich verrate dir meinen Namen nicht');
}
Es gibt andere Methoden, aber sie sind alle ungefähr so umständlich, weil JavaScript die objektorientiete Programmierung nur bedingt unterstützt.
Geändert von rewboss (22.05.2005 um 13:51 Uhr).
|
|
|
22.05.2005, 13:49
|
#10
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Zitat:
|
Zitat von seb
Gerade bei komplexen Programmen zahlt sich OOP sehr schnell aus bzw. manches ist ohne überhaupt nicht möglich.
|
Eben. Es kommt drauf an, was du machen willst. Wenn du nur sowas machen willst:
PHP-Code:
for($i=0; $i<10; $i++) echo "<option value=\"$i\">Option Nr. $i</option>";
dann lohnt sich OOP wirklich nicht. Wenn du ein ganzes Forum programmieren willst, ist OOP die einzige praktische Möglichkeit.
|
|
|
22.05.2005, 15:24
|
#11
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Code:
<script>
function vater(n) {
if (!n)
n = "Heinrich";
this.name=n;
this.sag_hallo = function() {
alert("Hallo, ich heiße "+this.name);
}
this.sag_byebye = function() {
alert("Tschüss sagt der Papa!");
}
}
sohn.prototype = new vater();
function sohn() {
this.sag_hallo = function() {
alert('Ich verrate dir meinen Namen nicht. Aber mein Vater heisst '+this.name);
}
}
var lala = new sohn();
lala.sag_hallo();
lala.sag_byebye();
</script>
...geht doch
Gruss
Jan
|
|
|
22.05.2005, 18:48
|
#12
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
versteh ich das richtig, das in Deinem Beispiel das Schlüsselwort prototype ist, über das Eigenschaften dem Objekt hinzugefügt werden können ? Seh das hier das erstemal.
(ich staun bei Dir immer wieder, was Du so alles ausgräbst  )
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.
|
 |