Communauté Informatique NDFR.net : PHP 5 et Orienté Objet, classes héritées - Programmation Web (HTML, PHP, ASP, Java, XML, etc.)
Reply
PHP 5 et Orienté Objet, classes héritées
Thread Tools Display Modes
  #1  
Old 14-12-2005, 22:29
Aka's Avatar
Aka Aka is offline
Garde raprochée
 
Join Date: 14-12-2005
Location: Angers / Tours
Age: 38
Posts: 7
PHP 5 et Orienté Objet, classes héritées

Bonjour à tous, je viens d'apprendre a mes depends que les classes heritées en PHP5 n'heritent pas des constructeurs et destructeurs de la classe parente ..

Je voulais donc savoir si il existait un moyen d'automatiser cet heritage, et de quelle manière il était possible d'heriter les constructeurs et destructeurs de classe. ( __construct() et __destruct() )

Il me semble qu'on peux faire apel aux proriétées du parent comme suit, mais j'ai du mal à savoir exactement de quelle manière procéder ..

PHP Code:
parent::__construct(); 

Si vous voyez de qoi je vous parles et que vous trouvez un moyen d'éclairer ma lanterne .. je vous en serait redevable !

Merci
Reply With Quote
  #2  
Old 14-12-2005, 22:40
fonji fonji is offline
Membre senior
 
Join Date: 01-07-2003
Age: 38
Posts: 1,627
Salut !
J'ai jamais fait ça en php mais si c'est comme en java, dans ton constructeur tu appelles en tout premier parent::__construct(); et voilà...

Mais je sais pas du tout si c'est applicable au php... Peut être que ça ne fait pas d'erreur mais pas ce que tu cherches non plus !

J'en sais rien et j'ai pas le temps de tester. Désolé !

EDIT : AHA trouvé quelque chose d'intéressant :
Quote:
Code:
Le fichier pave.php

<?php
require ("rectangle.php");
class pave extends rectangle {
	var $hauteur;
	
	function pave ($larg, $long, $haut) {
		rectangle::rectangle($larg, $long);
		$this->hauteur = $haut;
	}
	
	function volume () {
		return parent::aire()*$this->hauteur;
	}
}
?>
[...]On remarque par ailleurs que le constructeur de la classe pave appelle explicitement le constructeur de sa classe parente, rectangle. En effet, celà n'est pas automatique en php.
ici !
Reply With Quote
  #3  
Old 14-12-2005, 23:00
Aka's Avatar
Aka Aka is offline
Garde raprochée
 
Join Date: 14-12-2005
Location: Angers / Tours
Age: 38
Posts: 7
yeah ! impec, tout ce qu'il me fallait en fin de compte !

Juste une question donc .. tu voit l'interet de ne pas faire appel aux constructeurs par defaut ?
__________________
Je ne sais pas jongler avec des cerceaux enflammés tout en sautant sur le pied gauche et en buvant une bière avec l'autre. Certains disent le contraire .. mais je jure c'était pas moi ..
Reply With Quote
  #4  
Old 15-12-2005, 08:23
Benjy's Avatar
Benjy Benjy is offline
Administrateur
 
Join Date: 21-08-2001
Location: Rueil Malmaison (92)
Age: 43
Posts: 2,043
Send a message via MSN to Benjy
Quote:
Originally Posted by Aka
Juste une question donc .. tu voit l'interet de ne pas faire appel aux constructeurs par defaut ?
Oui : la rétro-compatibilité avec PHP4, qui ne supporte ni __construct() ni __desctruct(). C'est pour ça qu'en général je recommande de créer un constructeur générique (appellons-le toto(), dans la classe toto), que la fonction __construct() appelle.

Démonstration Jeanine :
PHP Code:
class toto
{
    
/* Constructeur PHP5 */
    
function __construct()
    {
        
$this->toto();
    }
    
    
/* Destructeur PHP5 */
    // je ne m'en sers que très rarement...
    
function __destruct()
    {
        
//contenu
    
}
    
    
/* Constructeur générique */
    
function toto()
    {
        
//contenu
    
}

__________________
Merci de lire et de respecter les règles et d'utiliser la .
Reply With Quote
  #5  
Old 15-12-2005, 09:16
Cougar's Avatar
Cougar Cougar is offline
Membre senior
 
Join Date: 16-09-2001
Location: Orléans
Age: 39
Posts: 3,850
Send a message via MSN to Cougar
Quote:
Originally Posted by Aka
yeah ! impec, tout ce qu'il me fallait en fin de compte !

Juste une question donc .. tu voit l'interet de ne pas faire appel aux constructeurs par defaut ?
L'intérêt c'est de pouvoir rajouter des champs dans la classe "descendante".
En syntaxe c++, si tu supposes que t'as une class personne et que tu veux faire une classe étudiant qui hérite de celle-ci ton constructeur ressemblera a ceci :
(dans le .cpp)

Code:
 
Etudiant::Etudiant(string nom,prénom,int age,_numero) {

numeroEtudiant=_numero // champ de la class étudiant

Personne(nom,prenom,age);  //et on appelle le constructeur du parent

}
Autre solution, faire un truc du genre :
Code:
Etudiant::Etudiant():Personne() { 
//code
}
qui appellera automatiquement le constructeur de Personne.

Donc pour résumer ce qui a été dit, pour utiliser le constructeur de la classe parente il faut l'écrire soit même
__________________
Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
PHP 4.3.11 et PHP 5.0.4 1for-matik Actualité 0 05-04-2005 13:52
PHP 4.3.10 et PHP 5.0.3 1for-matik Actualité 0 16-12-2004 18:40
PHP 5.0.0 Final Toitoine Actualité 10 18-07-2004 17:16
Problème de lecture de fichier en PHP stan Programmation Web (HTML, PHP, ASP, Java, XML, etc.) 9 12-10-2003 22:47
creer un site en php kenny250 Discussions sur le site et/ou le forum 5 03-11-2002 11:40

All times are GMT +2. The time now is 16:19.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.