SetaPDF
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 21.05.2005, 22:10   #1
TP-Insider
 
Registriert seit: May 2001
anrebe macht alles soweit korrekt

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
anrebe ist offline   Mit Zitat antworten


Alt 21.05.2005, 22:30   #2
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
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.
rewboss ist offline   Mit Zitat antworten
Alt 21.05.2005, 22:36   #3
TP-Veteran
 
Benutzerbild von the-architect
 
Registriert seit: Jun 2004
Ort: Stuttgart
the-architect bringt sich richtig einthe-architect bringt sich richtig ein
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
__________________
mein blog | imedo.de | clubrating.de | deviantart


the-architect ist offline   Mit Zitat antworten
Alt 21.05.2005, 23:23   #4
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
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.
Strogij ist offline   Mit Zitat antworten
Alt 22.05.2005, 00:26   #5
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
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
Stuck Mojo ist offline   Mit Zitat antworten
Alt 22.05.2005, 01:10   #6
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 22.05.2005, 02:03   #7
seb
TP-Veteran
 
Registriert seit: Jan 2002
seb bringt sich richtig einseb bringt sich richtig ein
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).
seb ist offline   Mit Zitat antworten
Alt 22.05.2005, 11:08   #8
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
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
Boris ist offline   Mit Zitat antworten
Alt 22.05.2005, 13:43   #9
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
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).
rewboss ist offline   Mit Zitat antworten
Alt 22.05.2005, 13:49   #10
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
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.
rewboss ist offline   Mit Zitat antworten
Alt 22.05.2005, 15:24   #11
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE

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
Stuck Mojo ist offline   Mit Zitat antworten
Alt 22.05.2005, 18:48   #12
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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 )
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
PHP objektorientiert PHP objektorientiert
« PHP Tastatur !? | [Smarty+PHP]Weiterleitung mit Smarty »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67