php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.10.2004, 14:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1.531
Quadaptor befindet sich auf einem aufstrebenden Ast
Standard DOM-Klasse erweitern?

Hi,

ist es möglich, verschiedene DOM-Klasse um weitere Methoden zu erweitern? Auf unterster Ebene, also DOMDocument, wäre das ja kein Problem, allerdings möchte ich z.B. DOMElement eine weitere Methode hinzufügen. Zugriff auf auf die Instanzierung des Objektes gibt es ja nicht direkt, somit fällt DOMIrgendwas extends DOMElement schonmal weg. Weitere Möglichkeiten sind mir nicht bekannt.

Hat vielleicht jemand eine Idee?
Vielleicht bin ich auch nur auf den Kopf gefallen.

Grüße,
Dennis
Quadaptor ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 20.10.2004, 09:16  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Zitat:
Hi,

ist es möglich, verschiedene DOM-Klasse um weitere Methoden zu erweitern? Auf unterster Ebene, also DOMDocument, wäre das ja kein Problem, allerdings möchte ich z.B. DOMElement eine weitere Methode hinzufügen. Zugriff auf auf die Instanzierung des Objektes gibt es ja nicht direkt, somit fällt DOMIrgendwas extends DOMElement schonmal weg. Weitere Möglichkeiten sind mir nicht bekannt.

Hat vielleicht jemand eine Idee?
Vielleicht bin ich auch nur auf den Kopf gefallen. Wink

Grüße,
Dennis
Hi,

wieso sollte es keinen Zugriff auf die Instanziierung einer Elternklasse geben? Mir schwebt folgendes vor (PHP4):

PHP-Code:

class DOMElementExtended extends DOMElement {
    function 
DOMElementExtended (...) {
        
DOMElement::DOMElement (...);
        ...
    }

marsch ist offline   Mit Zitat antworten
Alt 20.10.2004, 10:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1.531
Quadaptor befindet sich auf einem aufstrebenden Ast
Standard

Hallo marsch,

entweder verstehe ich dein Beispiel nicht oder bei dir gibt es einen Denkfehler.

Natürlich kann ich jede beliebige Klasse vererben, jedoch ruft ja DOM nicht meine Klasse auf, sondern immer die Mutterklasse.

Nehmen wir folgendes Beispiel-Script:
PHP-Code:
$doc = new DOMDocument();  // DOMDocument
$doc->load('test.xml');
$root $doc->documentElement;  // DOMElement
echo $root->nodeName
In der Membervariable 'documentElement' steckt ein Objekt der Klasse DOMElement. Ich möchte aber sämtliche DOMElemente um eigene Methoden erweitern. An der Stelle müsste ich DOM irgendwie beibringen, dass mir nicht DOMElement, sondern z.B. eine Objekt der DOMElementExtends-Klasse zurückgibt. Da diese Instanzierung aber intern abläuft, ist da wohl nichts zu rütteln.

Ich hoffe mein Problem ist verständlich.
Quadaptor ist offline   Mit Zitat antworten
Alt 21.10.2004, 09:06  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Hi,

Zitat:
entweder verstehe ich dein Beispiel nicht oder bei dir gibt es einen Denkfehler.
Ich hoffe nicht

Zitat:
Natürlich kann ich jede beliebige Klasse vererben, jedoch ruft ja DOM nicht meine Klasse auf, sondern immer die Mutterklasse.
...
In der Membervariable 'documentElement' steckt ein Objekt der Klasse DOMElement. Ich möchte aber sämtliche DOMElemente um eigene Methoden erweitern. An der Stelle müsste ich DOM irgendwie beibringen, dass mir nicht DOMElement, sondern z.B. eine Objekt der DOMElementExtends-Klasse zurückgibt. Da diese Instanzierung aber intern abläuft, ist da wohl nichts zu rütteln.
Beim Erzeugen des Documents müsstest Du schon eine von DOMDocument abgeleitetete Klasse instanziieren, die ihrerseits im Konstruktor den Konstruktor von DOMDocument aufruft. In Deiner eigenen DOMDocument-Klasse müsstest Du alle ("öffentlichen") Methoden von DOMDocument überschreiben, dass sie genau das tun, was Du willst, nämlich z.B. von DOMElement abgeleitete Klassen zu benutzen und die entsprechenden Eigenschaften zu füllen. Das klingt nach einem größeren Projekt...

--

Marco
marsch ist offline   Mit Zitat antworten
Alt 21.10.2004, 09:19  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

exakt.
du musst sozusagen eine klasse zwischenschieben.

gibt es da auch nicht ein entwurfsmuster zu? müsste ich mal nachschauen.
imported_Ben ist offline   Mit Zitat antworten
Alt 21.10.2004, 09:23  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Zitat:
Zitat von Ben
exakt.
du musst sozusagen eine klasse zwischenschieben.

gibt es da auch nicht ein entwurfsmuster zu? müsste ich mal nachschauen.
Eine Factory... oder?

--

Marco
marsch ist offline   Mit Zitat antworten
Alt 21.10.2004, 12:30  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm. ich hab gerade kein buch hier ... das hat sich mein tischnachbar unter den nagel gerissen und der ist irgendwie ... öhem .. weg

eine factory hmmm ... ich würde sagen, dass das eher ein decorator/wrapper ist.
imported_Ben ist offline   Mit Zitat antworten
Alt 22.10.2004, 22:30  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1.531
Quadaptor befindet sich auf einem aufstrebenden Ast
Standard

Tja, leider habe ich das schon so ausprobiert. Geht aber nicht so einfach.

An den ein oder anderen Stellen werden auf Membervariablen ála nodeName, nodeValue oder auch documentElement zugegriffen, die dann den entsprechenden Wert zurückliefern. Da hat man leider keinen Einfluss mehr auf den Rückgabewert. Das könnte man ja notfalls noch durch eine vergleichbare Methoden ersetzen.

Allerdings wirds spätestens bei der DOMNodeList dann richtig tricky, weil dort Funktionen bereitgestellt werden müssen, die für foreach-Schleifen oder Iteratoren notwendig sind. Der Arbeitsaufwand steht dann wahrscheinlich nicht mehr im richtigen Verhältnis zum eigentlichen Nutzen.
Quadaptor ist offline   Mit Zitat antworten
Alt 23.10.2004, 01:33  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Quadaptor
Tja, leider habe ich das schon so ausprobiert. Geht aber nicht so einfach.
Ich hatte spaßeshalber mal das für Dich getestet:
http://test.php-help.info/class-1/
  Mit Zitat antworten
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
HTML Klasse ecomeback PHP Tipps 2008 6 31.08.2007 22:32
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
Eine Klasse mehrere Dateien sn00py PHP Tipps 2006 6 08.05.2006 11:40
mehr als eine Klasse einbinden Alpha Centauri PHP-Fortgeschrittene 4 13.04.2006 20:56
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
[Erledigt] 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
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Klasse holt sich die Klasse PHP-Fortgeschrittene 9 07.10.2004 11:53
[Erledigt] 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
dom klasse, dom klasse setzen, php domdocument decorator, domelement erweitern, domdocument-klasse php einbinden, dom erweitern um, php extend domelement, dom erweitern eigene variable, dom objekt erweitern, dom klassen erweitern, dom element erweitern, dom klasse hinzufügen, dom klasse hinzufügen php, dom erweitern, php eigene xml dom klasse

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, 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.