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 :

[POO]Instancier une classe enfant en passant dans le constructeur le parent(fichier)


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut [POO]Instancier une classe enfant en passant dans le constructeur le parent(fichier)
    Bonsoir,

    Un petit problème dont je ne sais pas si c'est réalisable.

    J'ai dans 2 fichiers distincts, 2 classes de même nom.

    Dans une classe enfant que j'instancie dans mon script, je souhaite faire que ce soit le constructeur qui appelle le fichier de la classe parente.

    Donc 4 fichiers de départ :
    class_parent_1.php (contient la classe parent)
    class_parent_2.php (contient la classe parent)
    class_enfant_php (contient la classe enfant)
    script.php

    Donc un exemple de ce que je veux faire :

    page script.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    require 'class_enfant.php';
    $fichier_parent = $x == 1 ? 1 : 2;
     
    $ma_classe = new enfant($fichier_parent);
    Ma classe enfant contiendrait donc par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class enfant extends parent
    {
        function __construct($parent)
        {
             require 'class_parent_' . $parent . '.php';
             parent::__construct();
        }
     
    }
    Mais bien entendu, cette façon ne fonctionne pas, php me signale un fatal error comme quoi la class parent n'existe pas.

    Est-ce possible de faire ceci, donc que ça soit ma classe enfant qui appelle le fichier contenant la classe parent en fonction d'un argument passé dans le constructeur ?

    Ou d'une autre manière peut-être.

    Merci.

  2. #2
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    parent est un mot clef réservé par PHP, renomme tes classes différemment

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Comment cela pourrait-il être possible ? La classe en question hérite d'une classe (parent) qui n'est pas définie au moment où la classe enfant y est. Faut trouver autre chose ...

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Oui, je sais genova, j'ai mis parent dans mon explication pour que ce soit assez clair

    Donc ce n'est pas possible alors.

    Tant pis.

    J'ai vu qu'il y avait une fonction magique __autoload(), je vais voir si je ne pourrais pas l'adapter à ma situation.

    Merci de vos réponses.

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

Discussions similaires

  1. [PHP 5.2] [POO] Instancier une classe fille appelante depuis la classe mère
    Par loacast dans le forum Langage
    Réponses: 13
    Dernier message: 15/08/2010, 18h12
  2. [PHP 5.0] instancier une classe avec son nom dans une variable
    Par Nnay_ dans le forum Langage
    Réponses: 1
    Dernier message: 12/02/2009, 13h49
  3. [débutant]Instancier une classe dans une autre classe
    Par g_tarik0010 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 28/10/2008, 12h05
  4. Instancier une classe dont le nom est contenu dans une String
    Par fyque dans le forum Général Python
    Réponses: 15
    Dernier message: 13/06/2008, 13h33
  5. Réponses: 0
    Dernier message: 22/04/2008, 19h44

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