IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Initiation à l'héritage, question technique


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Par défaut Initiation à l'héritage, question technique
    Bonjour,

    J'aimerais réaliser mon premier héritage, j'ai comprit le principe mais dans mon cas je ne sais pas trop comment faire:

    J'ai un constructeur dans ma class parent qui initialise des variable et une fonction qui les traite.

    La différence avec ma class fille, c'est l'ajout de plusieurs variables, ainsi, elles doivent aussi être initialisés à la création de l'objet, et j'ai besoin de la même fonction que ma class parent, mais avec une ligne de "if/else" en plus pour chaque variable propres à ma class fille.

    1 (concernant l'initialisation des variables de la class fille)] Existe t-il un moyen de faire un constructeur propre à ma class fille qui initialise les variable par le constructeur de son père + le sien ou faut-il déclarer toutes les variables à initialiser dans la class parent, quitte à avoir des variables "protected" qui ne lui serve à rien mais seraient utile uniquement en cas de création d'une class fille ?

    2 (partage d'une fonction avec un ajout côté filles)] J'utilise une même fonction dans la class parent et la class fille, sauf que la class fille traite les mêmes variable, et 6 en plus propres à elle, dois-je créer deux fonctions de noms différents ? (une dans la class parent et une dans la classe fille), où si je créer une fonction du même nom dans le fils que dans le père, mais avec uniquement la "partie manquante" (les 6 if/else en +) utile uniquement à la class fille, php saura t-il comprendre comment s'y prendre ?

    Je suis conscient que mon explication n'est peut être pas facile à comprendre, c'est pourquoi je me ferait un plaisir de répondre à vos questions si vous en avez ! Voici cependant un petit schémas qui vous parlera peut-être plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    UTILE DANS LE PERE + LE FILS
               public function verif_val($creneau, $attribution)
               {
                   if ((!$donnees) AND ($creneau == 'dixhuitavingt'))
    			return $this->dixhuitavingt;
    		else if (($donnees) AND ($creneau == 'dixhuitavingt'))
    		{
    			$this->dixhuitavingt = true;
    			return $this->dixhuitavingt;
    		}
    		if ((!$donnees) AND ($creneau == 'vingtavingtdeux'))
    			return $this->vingtavingtdeux;
    		else if (($donnees) AND ($creneau == 'vingtavingtdeux'))
    		{
    			$this->vingtavingtdeux = true;
    			return $this->vingtavingtdeux;
    		}
                   UTILE UNIQUEMENT DANS LE FILS (est-ce possible d'ajouter uniquement ce bout de code côté fille en reprenant le même nom de fonction ?)
    		if ((!$donnees) AND ($creneau == 'vingtdeuxaminuit'))
    			return $this->vingtdeuxaminuit;
    		else if (($donnees) AND ($creneau == 'vingtdeuxaminuit'))
    		{
    			$this->vingtdeuxaminuit = true;
    			return $this->vingtdeuxaminuit;
    		}
                 }
    Merci !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    Oui c'est possible, on appelle cela de la surcharge. Tu peux appeler la même méthode de la classe parent avec le mot clé parent et l'opérateur ::
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function afficher() {
            parent::afficher();
            // Ton traitement pour la classe fille ...
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Par défaut
    Ok donc si j'ai bien comprit dans l'exemple ci dessous si je crée un objet de ma class fille, elle initialisera bien les variables de 1 à 8 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    CLASS DU PERE
    class A
    {
            private $jour;
    	protected $dixhuitavingt;
    	protected $vingtavingtdeux;
     	protected $vingtdeuxaminuit;
    
      public function __construct($jour)
      {
    		$this->jour = $jour;
    		$this->1 = false;
    		$this->2 = false;
    		$this->3 = false;
      }
    }
    CLASS DU FILS FILS
    class B extends A
    {
            protected $jour;
    	private $huitadix;
    	private $dixadouze;
    	private $douzeaquatorze;
    	private $quatorzeaseize;
    	private $seizeadixhuit;
    
      public function __construct($jour) 
      {
                    parent::__construct($jour);
    		$this->4 = false;
    		$this->5 = false;
    		$this->6 = false;
    		$this->7 = false;
    		$this->8 = false;
      }
    }
    EDIT:
    Merci beaucoup ! Tu viens de m'apprendre une nouvelle notion !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question techniques sur les extents
    Par lecharcutierdelinux dans le forum Oracle
    Réponses: 16
    Dernier message: 24/08/2006, 09h01
  2. [général] Questions techniques
    Par fantomasmusic dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 04/11/2005, 08h48
  3. [debutant]Question technique
    Par toto4650 dans le forum Débuter
    Réponses: 23
    Dernier message: 13/07/2005, 02h06
  4. WSAD et serveur appli, question technique
    Par Canou dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 4
    Dernier message: 09/12/2004, 14h35
  5. [.NET] Une question technique a propos du mode asynchrone
    Par nicknolt dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 08/06/2004, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo