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 :

l’héritage constructor avec array


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 117
    Par défaut l’héritage constructor avec array
    Bonjour

    j'ai une classe fille qui hérite de la classe mère , le constructeur de la classe mère a un seul paramètre de type array();
    la classe fille a aussi le paramètre dans le constructeur de type array(), ma question c'est comment en criant l'object de
    la classe fille nous puissions passer les attributs nécessaires au classe mère et le reste de attributs a la classe fille??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Fille extends mere{
        public function __construct($array = array()){
            if(is_array($array)){
                parent::__construct($array);
    ........
            }
        }
    }
    dois je parcourir d'abord le tableau pour filtrer ce que appartient a la classe fille et la classe mère??

    merci pour votre aide.

  2. #2
    Membre très actif
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Par défaut
    en criant l'objet ? de ce que je comprends car ce n'est pas très clair ton problème, tu as un attribut array dans la classe mère et un dans la classe fille, et tu souhaites les initialiser avec le tableau passé dans le constructeur

    et bien oui le plus simple est de parcourir ton tableau pour le filtrer

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 117
    Par défaut
    Merci Rpass d'avoir répondu , créer au lieu de crier désolé pour l’erreur,

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu as un attribut de type array à affecter ou tu as un tas d'attributs que tu veux alimenter à partir de chaque élément du tableau ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 117
    Par défaut
    Merci Celira j'ai des attributs que je veux alimenter a partir
    De array passé dans le paramètre de constructeur donc chaque
    Élément de tableau va alimenter l'attribut qui lui correspondre.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu peux tenter de faire ça automatiquement, ou tu peux faire en lisant chaque élément du tableau et en utilisant l'attribut correspondant.
    Automatiquement, ça donnerait quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function __construct($array = array()){
        foreach ($array as $key => $val) {
            $this->{$key} = $val;
        }
    }
    Le problème c'est que ça implique d'utiliser comme clé exactement le nom des attributs (et il est fort probable que ça explose si tu as une clé qui ne correspond pas à un attribut)
    A la main, ça donne quelque chose comme ça :
    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
    class Maman {
        private $_attr1;
        private $_attr2;
     
        public function __construct($array = array()){
            foreach ($array as $key => $val) {
                switch($key) {
                case 'attribut1' :
                    $this->_attr1 = $val;
                    break;
                case 'attribut2' :
                    $this->_attr2 = $val;
                    break;
                }
            }
        }
    }
    La 2e solution est assez lourde à écrire, mais permet une meilleure maitrise de ce qu'il se passe.
    Et du coup, tu peux facilement avoir une classe fille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Fifille extends Maman {
        private $_attr3;
     
        public function __construct($array = array()){
            parent::__construct($array);
            foreach ($array as $key => $val) {
                switch($key) {
                case 'attribut3' :
                    $this->_attr3 = $val;
                    break;
            }
        }
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Constructor avec argument nom de fichier
    Par Jean_Benoit dans le forum C++
    Réponses: 5
    Dernier message: 29/09/2006, 13h34
  2. [VB-Excel]problème de syntaxe avec Array
    Par DomBourti dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/07/2006, 21h30
  3. Probleme de type avec Array
    Par BECHE dans le forum Langage
    Réponses: 5
    Dernier message: 30/03/2006, 23h05
  4. Petit probleme avec Arrays.Sort(...)
    Par Seth77 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 15/01/2006, 12h48
  5. création de tableaux avec Array() et élément 'fantome'
    Par Talieth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/11/2005, 09h49

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