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 :

Utilisation de deux classes ayant le même nom


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Utilisation de deux classes ayant le même nom
    Bonjour,

    Je présente mon problème :
    j'ai deux applications en PHP qui définissent chacune leurs propres classes. Certaines de ces classes ont le même nom.
    Par exemple :
    - application1 a une classe Projet
    - application2 a une classe Projet

    donc deux classes différentes pour un seul nom.


    Mon problème : je dois utiliser des classes d'une application dans la 2e. Mais comme les noms sont le même cela cause des conflits
    Erreur:
    "PHP Fatal error: Cannot redeclare class Project ..."
    quand je fais un include() dans une application vers une autre.
    En sachant que je ne peux pas modifier le nom des classes.

    Le meilleur moyen de gérer ce problème serait d'utiliser des namespaces je pense. Malheureusement, j'ai comme contrainte d'utiliser PHP 5.2 et les namespaces n'apparaissent qu'à partir de PHP 5.3 il me semble.


    La seule autre solution que je vois c'est :
    - utiliser la classe Projet de l'application 1
    - dé-définir la classe Projet (un genre de "unset Projet)
    - faire un include sur la 2e classe Projet
    - utiliser la 2e classe

    Ça serait très moche, mais sur le principe ça pourrait fonctionner.

    D'où ma question : est que quelqu'un sait comme je pourrais faire pour "dé-définir" une classe en PHP ?
    Ou encore mieux : est que quelqu'un sait comment régler ce problème d'une meilleur façon ?


    Pas facile comme problème ...

  2. #2
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Bonjour et bienvenue sur le forum.

    Effectivement, pas de namespace sans PHP 5... Je me suis déjà posé cette question, et d'après mes recherches :
    - un "unset" d'une classe n'est pas possible nativement
    - même en jouant avec l'autoload, ça ne va rien changer

    les solutions que je te propose :
    - ou bien : utiliser l'extension Runkit (il existe par exemple une méthode runkit_method_rename, peut-être existe t-il la même chose pour les classes ?)

    - ou bien : réécrire à la volée le code PHP. Exemple vite fait, juste pour le principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $content = file_get_contents(nom de la classe);
    $content = preg_replace('!ancienne classe!', 'nouveau nom de la classe', $content);
    file_puts_content('fichier temporaire', $content);
    require_once 'fichier temporaire');
    unlink('fichier temporaire')
     
    //
    // Ce code est juste une idée, ce serait plus performant 
    // en écrivant le fichier en Ram par exemple, et avec un cache
    N'hésite pas à nous dire si tu as d'autres pistes
    Zend PHP Certified Engineer, Certifié Symfony2
    blog : blog.lepine.pro
    Secrétaire de l'AFUP (Association des Utilisateurs de PHP)

Discussions similaires

  1. [Langage/Algorithme] Deux Classes avec le même nom déclaré dans Deux CPP différents
    Par ShaiLeTroll dans le forum C++Builder
    Réponses: 8
    Dernier message: 09/10/2012, 10h35
  2. [c#] utiliser deux méthodes différentes ayant le même nom!
    Par Cédric B. dans le forum Services Web
    Réponses: 6
    Dernier message: 28/04/2011, 08h51
  3. Réponses: 4
    Dernier message: 16/12/2009, 19h49
  4. Réponses: 2
    Dernier message: 03/07/2008, 11h09
  5. deux champs ont le même nom
    Par mamouna dans le forum ASP
    Réponses: 5
    Dernier message: 01/07/2004, 13h55

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