php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.10.2004, 16:29   #1 (permalink)
Gast
 
Beiträge: n/a
Standard [Erledigt] Klasse holt sich die Klasse

Hallo werte Fortgeschrittene!
(Ich habe um sicherzugehen hier posten zu dürfen das gesamte Manual Kapitel 17 Klassen und Objekte nocheinmal durchgelesen!)
Eigentlich geht es um ein recht banales Problem:

Ich habe eine Klasse die einen Basisteil darstellt und eigenständig läuft!
So jetzt will ich quasi eine Extension für diese Klasse schreiben!
Diese Klassenextension soll selber eine gleichnamige Klasse sein und die gesamten Variablen und Funktionen aus der Basisklasse in der anderen Datei holen! Und genau da habe ich Schwierigkeiten!

Also nochmal etwas Schematischer:

2 Klassen in unterschiedlichen Dateien
Basisklasse Erweiterungsklasse

Die Erweiterungsklasse soll auf die Basisklasse zugreifen und den selben Namen wie die Basisklasse haben! Sie muss auf sämtliche Funktionen und Variablen in der Basisklasse zugreifen können!

Und zum schluss:

Geht das? Ist das realisierbar!
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.10.2004, 16:38   #2 (permalink)
Gast
 
Beiträge: n/a
Standard

Also erweiterung geht, per extends .. die frage ist, was passiert wenn die
neue klasse den gleichen namen hat, wie die alte klasse .. ich würd spontan
sagen, ausprobieren, php wird definitiv meckern, wenn das nicht erlaubt ist.
was handfestes hab ich dazu leider auch nicht .. ich kann nur aus dem ver-
halten bei funktionen ableiten, die man ja auch nicht 2x mit selben namen de-
finieren darf.
  Mit Zitat antworten
Alt 06.10.2004, 16:50   #3 (permalink)
Gast
 
Beiträge: n/a
Standard

hi,

so wie du dir das vorstellst ist das leider nicht realisierbar. es hört sich so
an als wolltest du ein art plugin system haben mit dem du eine basis klasse relativ beliebig erweitern kannst. bevor ich hier aber loslege mal eine frage : hast du schon erfahrung mit oo programmierung? wenn nicht dann solltest du dir erstmal die basics aneignen (:.

Sike
  Mit Zitat antworten
Alt 06.10.2004, 17:32   #4 (permalink)
Gast
 
Beiträge: n/a
Standard

Zitat:
: hast du schon erfahrung mit oo programmierung? wenn nicht dann solltest du dir erstmal die basics aneignen (:.
ja habe ich
Zitat:
bevor ich hier aber loslege
dann leg los...

Zitat:
php wird definitiv meckern
jo da kommt ne redeclare meldung...
Zitat:
Cannot redeclare class test
hmm ist die die frage: kann man iwie eine Klasse redeclarieren bzw. wieder rausdeklarieren nachdem man sie geladen hat?!
  Mit Zitat antworten
Alt 06.10.2004, 21:08   #5 (permalink)
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Damit, dass es mehrere Klassen gibt, die gleich heissen, habe ich ganz üble Erfahrungen gemacht (bei Code von jemand anders), das würde ich lassen.

Damit die Klassen nicht gleich heissen müssen, würde ich über eine Factory gehen, anstatt die Klasse direkt über new zu instanziieren.
__________________
mod = master of disaster
Waq ist offline   Mit Zitat antworten
Alt 06.10.2004, 22:04   #6 (permalink)
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1.531
Quadaptor befindet sich auf einem aufstrebenden Ast
Standard

Genau:
Design Pattern: Farbrikklasse

Vielleicht überdenkst du auch einfach nochmal deine Programmlogik. Lässt sich bestimmt auch anders realisieren. Derartige "Probleme" hatte ich z.B. noch nie gehabt. Du weißt ja, alle Wege führen nach Rom und verschiedene Logiken bringen letztendlich das Gleiche Ergebnis.
Quadaptor ist offline   Mit Zitat antworten
Alt 07.10.2004, 10:50   #7 (permalink)
Erfahrener Benutzer
 
Registriert seit: 27.10.2003
Beiträge: 530
Thice
Standard

Kann mir vielleicht jemand erklären wie das mit den Fabrikklassen funktioniert?
Oder gibt's da n gescheites Tutorial? Ich hab da irgendwie nix gefunden
__________________
kintzebros.de | KintzeBros Home Entertainment
2061. Nach dem Frieden | kurzfilm
Paula | spielfilm
Thice ist offline   Mit Zitat antworten
Alt 07.10.2004, 11:24   #8 (permalink)
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1.531
Quadaptor befindet sich auf einem aufstrebenden Ast
Standard

Seltsam, Googles erster Treffer ergibt sofort eine ordentlische Beschreibung:
http://www.google.de/search?hl=de&q=...le-Suche&meta=
Quadaptor ist offline   Mit Zitat antworten
Alt 07.10.2004, 11:43   #9 (permalink)
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Erstmal würde ich anmerken, dass es zwei GoF-Design-Patterns mit "Factory" im Namen gibt, nämlich die "Abstract Factory" und die "Factory Method". Die Abstract Factory ist hier falsch. Eine "Factory Class" gibt es nach GoF nicht.

Die Factory Method ist nicht viel mehr als eine Methode, die ein Objekt erstellt und zurückliefert, wobei unter verschiedenen Umständen unterschiedliche Objekte geliefert werden.

Die vorgeschlagene Implementation aus dem Jahre 1994 sieht vor, dass diese Factory Method eine Methode einer Klasse ist und bei Bedarf in einer davon abgeleiteten Klasse überschrieben wird.
Für C++ ist aber z.B. auch vorgeschlagen, STL-Templates zu verwenden, um zu vermeiden, dass man eine neue Sub-Klasse erstellen muss, nur um die eine Methode zu überschreiben.

Auch wenn es anders vorgesehen ist, Erich Gamma wird sich schon nicht nachts im Bett umdrehen, nur weil man ein wenig dreckig eine Funktion irgendwie dazu bringt, ein Objekt der richtigen Klasse zurückzuliefern, z.B. indem man über class_exists() abfragt, ob die zweite Klasse existiert und dann diese statt er ersten verwendet, oder indem der Name der zu instanziierenden Klasse in einer Variable abgelegt wird.
Ebenso sollte die Factory eigentlich ein Objekt sein, wobei man eben dieses Objekt austauschen würde, wenn die Factory andere Objekte liefern soll. So lange man kein ordentliches OOP macht und die verschiedenen Factories, die man braucht, ordentlich mitschleift, z.B. in Container-Objekten, ist es aber durchaus legitim, die Factory Method statisch aufzurufen, oder gar als einfache Funktion (ganz ohne Klasse), wobei mir der statische Aufruf doch lieber wäre.
__________________
mod = master of disaster
Waq ist offline   Mit Zitat antworten
Alt 07.10.2004, 11:53   #10 (permalink)
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.150
Guradia befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Waq
Die Factory Method ist nicht viel mehr als eine Methode, die ein Objekt erstellt und zurückliefert, wobei unter verschiedenen Umständen unterschiedliche Objekte geliefert werden.
Reales Beispiel: PEAR :: DB

Überlicherweise statisch aufgerufen wird DB :: connect(), mit einem DSN als Paramenter. Zurückgeworfen wird dann ein Objekt der Klassen DB_Mysql, DB_Mssql, DB_Oracle etc ....je nachdem, welche Art Server der DSN referenziert.
Guradia ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
zentrale Klasse für Datenbankanbindung Crypi PHP Tipps 2008 4 01.07.2008 11:13
Variable aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
mehr als eine Klasse einbinden Alpha Centauri PHP-Fortgeschrittene 4 13.04.2006 20:56
Instanz einer Klasse in SessionVariable PHP-Fortgeschrittene 2 21.02.2006 00:18
aus einer funktion auf funktion anderer klasse zugreifen seejay PHP Tipps 2006 3 05.01.2006 10:37
Klasenname einer nicht instanziierten Klasse DerDesian PHP Tipps 2007 9 30.11.2005 13:13
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23:12
Führerschein für Klasse A+B.. Preis OK??? Off-Topic Diskussionen 20 13.07.2005 18:44
Rückgabewert auf einer Klasse anders als in der Klasse micbur PHP Tipps 2005-2 6 10.06.2005 15:06
Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
[Erledigt] Instanz bilden innerhalb einer Klasse PHP Tipps 2004 7 11.12.2004 12:58
Brauche Hilfe bei meiner ersten Klasse PHP-Fortgeschrittene 9 24.09.2004 17:09
Klassenobjet in anderer Klasse benutzen inu PHP Tipps 2004 6 19.09.2004 10:58
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php gleichnamige klasse redeclare, klasse in klasse aufrufen, php klassen unterschiedlcihe dateien

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.