Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/10/2007, 13h49   #1
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Par défaut [POO] utiliser une méthode présente dans une autre classe

Bonjour,

J'ai une classe mère. Dans cette classe, j'aimerai utilisé une méthode présente dans une autre classe. J'avais déjà possé une question similaire, mais je n'avais pas réussie à faire ce que je voulais (héritage).

Voici ma classe mère :

Code :
1
2
3
4
5
6
7
8
9
10
11
class DisplayFrom {
 
	[...]
 
	// Méthode pour afficher un champ date
	public function fromdate($name,$value,$type,$width,$maxlength,$disabled) 
	{
		echo '<script type="text/javascript" src="js/date/calendar.js"></script>';
		echo '<input onclick="ds_sh(this);" readonly="readonly" style="cursor: text" name="'.$name.'" type="'.$type.'" '.$disabled.' value="'.$this->request($name,$value).'" style="width: '.$width.'px" maxlength="'.$maxlength.'"/>';
	}
}
Et voici ma classe fille :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
class Format {
 
        [...]
 
	public function FormatDate($date, $format = 'fr')
	{
		// Méthode pour formater une date EN en FR
		$r = '^([0-9]{1,4}).([0-9]{1,2}).([0-9]{1,4})$';
		if($format === 'en')
		return ereg_replace($r, '\\3-\\2-\\1', $date);
 
		return ereg_replace($r, '\\3/\\2/\\1', $date);
	} 
}
?>
J'aimerai utilisé dans la méthode fromdate() de la classe DisplayFrom, la méthode FormatDate() de la classe Format.

Pourriez vous expliquer comment faire ?

Merci d'avance
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 13h54   #2
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Salut,

Pas besoin d'héritage ici...

Il te suffit de faire ça dans ta classe mère:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// Inclusion de ta classe Format
require_once 'Format.php';
class DisplayFrom {
 
    [...]
 
    // Méthode pour afficher un champ date
    public function fromdate($name,$value,$type,$width,$maxlength,$disabled) 
    {
        $format = new Format(); // Instanciation de la classe Format
        $format->FormatDate($date); // Puis tu appelles ta méhtode...
        echo '<script type="text/javascript" src="js/date/calendar.js"></script>';
        echo '<input onclick="ds_sh(this);" readonly="readonly" style="cursor: text" name="'.$name.'" type="'.$type.'" '.$disabled.' value="'.$this->request($name,$value).'" style="width: '.$width.'px" maxlength="'.$maxlength.'"/>';
    }
}
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 13h58   #3
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
Cependant si tu tiens vraiment à faire de l'héritage pour d'autres raisons, il faut utiliser extends:

http://fr2.php.net/manual/fr/keyword.extends.php

Bon courage.
__________________
Linio
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 14h11   #4
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Alors j'ai testé la méthode de Yoteco.

Voici l'erreur retourné :

Citation:
Warning: require_once(../divers/format.class.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\wamp\www\gestion_prestation\class\formulaire\displayfrom.class.php on line 3

Fatal error: require_once() [function.require]: Failed opening required '../divers/format.class.php' (include_path='.;C:\php5\pear') in C:\Program Files\wamp\www\gestion_prestation\class\formulaire\displayfrom.class.php on line 3
J'ai donc testé ceci :

Code :
require_once dirname(__FILE__).'../divers/format.class.php';
Voici l'erreur :

Citation:
Warning: require_once(C:\Program Files\wamp\www\gestion_prestation\class\formulaire../divers/format.class.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\wamp\www\gestion_prestation\class\formulaire\displayfrom.class.php on line 3

Fatal error: require_once() [function.require]: Failed opening required 'C:\Program Files\wamp\www\gestion_prestation\class\formulaire../divers/format.class.php' (include_path='.;C:\php5\pear') in C:\Program Files\wamp\www\gestion_prestation\class\formulaire\displayfrom.class.php on line 3
En gro sil n'aime pas mon include !
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 14h16   #5
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
L'erreur te dit le soucis.

A priori tu as oublié un / :

Code :
require_once dirname(__FILE__).'/../divers/format.class.php';
__________________
Linio
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 14h23   #6
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Problème résolu !

J'avais déja inclu la classe format deja dans la page de base !

Merci beaucoup de votre aide !
__________________
www.SonolightDj.com
Prestataire sonorisation et lumière
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h39.


 
 
 
 
Partenaires

Hébergement Web