Accueil > Forum > > > > [PHP5] Etendre une classe prédéfinie
[PHP5] Etendre une classe prédéfinie
mercredi 13 décembre 2006 à 14:45:34 |
[PHP5] Etendre une classe prédéfinie

ZuGbEn
|
Bonjour !
Je débute plus ou moins dans la programmation orientée objet, et je souhaite faire une classe qui, à partir d'un DomNode existant, ajoute des methodes à cet objets.
Bon déjà je sait pas si c'est possible, ensuite (si ca l'est) je ne sait pas comment construire ma nouvelle classe.
En fait, je ne sait pas vraiment par quoi remplacer les [???] dans le code suivant (qui devrait afficher " root ") :
<?php
class class1 extends DomNode{ publicfunction__construct([???]){
[???]
} publicfunction dispName(){ echo$this->nodeName; } }
// créé un document XML de test $doc = new DOMDocument(); $doc->loadXML('<root><node/></root>');
// créé un DomNode $node = $doc->childNodes->item(0);
// créé un objet class1 à partir du DomNode $a = new class1($node);
// Test d'une méthode de class1 $a->dispName; ?>
Quelqu'un pourrait-il m'aider ? ou me rediriger vers un tuto assez complet sur les classes en php5, où la réponse aie une chance de figurer ?
Merci beaucoup !
|
|
mercredi 13 décembre 2006 à 15:12:52 |
Re : [PHP5] Etendre une classe prédéfinie
|
mercredi 13 décembre 2006 à 15:36:05 |
Re : [PHP5] Etendre une classe prédéfinie

malalam
|
Hello,
pas besoin de constructeur. Dans ce cas, le constructeur de la classe paren,te sera utilisée lorsque ta classe personnalisée sera instanciée. Sinon, si tu veux faire des ajouts dans le constructeur :
class child extends parent { public function __construct ($var) { // traitement spécifique de child parent::__construct ($var); } }
|
|
mercredi 13 décembre 2006 à 16:08:51 |
Re : [PHP5] Etendre une classe prédéfinie

ZuGbEn
|
Merci youn371, mais le liens que tu m'as donné ne parle pas du tout d'ajouter des méthodes à une classe.
Malalam, je parle d'étendre une classe prédéfinie de php5.
Malheureusement, il n'y a pas de constructeur à cette classe (DomNode), donc en remplacant les premier [???] par $i et le deuxième [???] par parent::__construct($i); , il me sort une erreur Fatal error: Can not call constructor ...
Si on ne met rien dans les [???], il n'affiche rien (et retourne NULL), ce qui est normal vu que je ne vois pas comment il peut savoir de quel Node il s'agit.
Hum si quelqu'un a encore une idée... jsuis preneur !
|
|
mercredi 13 décembre 2006 à 16:37:48 |
Re : [PHP5] Etendre une classe prédéfinie

malalam
|
J'avais compris, je connais bien DOMDocument. Un document XML est un node. Un gros node. C'est poiur ça que DOMDocument étend DOMNode... En clair, DOMNode est la classe de haut niveau, dans cette API. Donc, si tu veux faire ce que tu veux faire, tu dois déjà redéfinir DOMDocument...DOMElement, DOMNodeList etc...pour que leurs méthodes, attributs retournent ta classe au lieu d'un DOMNode.
Parce que ça : $node = $doc->childNodes->item(0); ça renvoir un DOMNode. Un objet déjà instancié, je veux dire.
Une solution simple est :
class class1 { private $node;
public function__construct(DOMNode $node){ $this -> node = $node; } public function dispName(){ if (is_null ($this -> node)) { throw new Exception ('Pas de DOMNode défini'); } echo $this ->node -> nodeName; } }
|
|
mercredi 13 décembre 2006 à 17:05:30 |
Re : [PHP5] Etendre une classe prédéfinie

ZuGbEn
|
Ok... j'avais pensé à la "solution simple" mais ca me plaisait pas d'avoir deux variables différentes pour traiter un node... (une instance de DomNode et une autre de ma classe)
Mais bon si il n'y a pas d'autre moyen... je prend quand même !
Hum... c'est triste ... j'hésite à tout foutre dans des fonctions maintenant (qui prendraient en argument le node)...
|
|
jeudi 14 décembre 2006 à 18:52:02 |
Re : [PHP5] Etendre une classe prédéfinie

DiGhan
|
Hello,
je n'ai jamais utilisé les classes DOMNode et DomDocument.
Cependant, j'ai pu lire que la classe DOMNode est constituée de plusieurs attributs dont un du type DOMNode (node).
De plus DOMNode semble être la classe 'racine' (la + haute au niveau de l'héritage), donc de fortes chances que ces attributs soient déclarés comme étant 'protected'.
N'est-il pas plus simple d'utiliser directement cet attribut dans une classe fille ?
class subClass extends DOMNode
{
public function __construct(DOMNode $pNode)
{
$this->node = $pNode;
}
}
|
|
jeudi 14 décembre 2006 à 19:17:35 |
Re : [PHP5] Etendre une classe prédéfinie

malalam
|
C'est qu'est je disais ;-) Mais dans ce cas, inutile d'étendre DOMNode.
|
|
Cette discussion est classée dans : classe, créé, class1, php5, domnode
Répondre à ce message
Sujets en rapport avec ce message
Fonctionnement SDO [ par guill76 ]
Bonjour,Je viens de découvrir un petit peu l'extension SDO de PHP5 que j'ai récupérée en installant PHP5.2.5 il ya environ un semaine et dans cette ex
[POO] Une classe dans une classe [ par Mrreivax ]
Bonsoir.Et bien voila. J'ai créé une classe de gestion des images.J'ai par la suité créé une autre classe de gestion de banières.Mais, cette dernière
Surcharge d'une fonction abstraite [ par codefalse ]
Bonjour à tous :)J'ai un petit soucis syntaxique, j'aimerai votre avis avant de continuer.J'ai une classeabstract class genericReader {} qui contient
PHP5 -> SPL , tri sur DirectoryIterator [ par stailer ]
Bonjour, J'utilise la classe DirectoryIterator pour lister tous les répertoires et fichiers d'un chemin. Grâce à isFile je peux lister uniquement les
constante de classe à récupérer dans la classe parente [ par rekam ]
Bonjour!oui, je sais, le titre fait 3km de long, mais j'ai de la peine à le raccourcir...Ainsi donc, voici mon problème: 1) J'ai 2 classe A et B2) La
Throw new HOW ? [ par codefalse ]
Hello tout le monde ! :)Alors voila, pour mes besoins perso je me suis fait une classe AlternativException extends Exception et une classe InvalidArgu
php5+mail [ par graph2007 ]
svp tous le mondes je suis en etat grave, j'ai un script mail qui fonctionne bien sur php4 mais c'marche plus sur php5. aider moi svp je doit le fai
prendre en compte .php5 [ par caviar ]
Saluté, je voulais savoir ou configurer dans apache l'interpretation de fichiers .php5 par PHP ... car j'ai une appli avec les fichiers en .php5 et il
Avis sur la façon de procéder ? [ par g_barthe ]
Bonjour,Je me suis mis il y a déjà quelques mois à développer un outils de gestion de collections (BD, CD, étiquettes de vins...) pour les collectionn
Recupere l'objet parent d'une classe fille [ par knabis2000 ]
Bonjour a tous,J'aurait une question :Est il possible de recuperer l'instance de l'objet mere d'une classe fille ?Petite explication : Imaginons 2 cla
Livres en rapport
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|