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] PHP 5 : aggregate sans refkit [Tutoriel]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    CEO
    Inscrit en
    Avril 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : CEO

    Informations forums :
    Inscription : Avril 2002
    Messages : 84
    Par défaut [POO] PHP 5 : aggregate sans refkit
    Bonjour,

    je recherche un moyen de faire de l'aggregate en php5.0 car la méthode n'est plus supporté.

    aggregate permet d'ajouter les méthodes d'une classe dynamiquement à un objet

    Merci pour votre aide
    PS: je recherche à le faire sans extension

  2. #2
    Membre expérimenté Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Par défaut
    ajouter des méthodes a un objet c'est impossible ça
    tu veux lancer une fonction en fait?

  3. #3
    Membre confirmé
    Profil pro
    CEO
    Inscrit en
    Avril 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : CEO

    Informations forums :
    Inscription : Avril 2002
    Messages : 84
    Par défaut
    Si c'est possible regarde

    http://fr2.php.net/aggregate

  4. #4
    Membre expérimenté Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Par défaut
    ouai j'ai du mal a comprendre comment ça marche et comme je suis en exam j'ai pas trop le temps de chercher

    il y a ceci sur ta page
    For PHP5 applications, the aggregate functionality available through classkit has been incorporated into and replaced by runkit. Per the classkit page of the PHP manual:

    "Note: This extension has been replaced by runkit, which is not limited to class manipulation but has function manipulation, as well."

    http://php.net/manual/en/ref.runkit.php

    Per the runkit page:

    " This package is meant as a feature added replacement for the classkit package. When compiled with the --enable-runkit=classkit option to ./configure, it will export classkit compatible function definitions and constants."
    ça doit pouvoir t'aider

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par laurent_h
    aggregate permet d'ajouter les méthodes d'une classe dynamiquement à un objet
    AMHA tu ne pourras pas le faire de manière totalement transparente. Autant connaitre la liste des méthodes d'une classe est chose aisée, autant en affecter une nouvelle est ardu sans passer par __call(), ce qui implique de modifier ta classe et qu'elle sache qu'elle est "agreggable".

    Ou alors ce que tu pourrais faire, c'est définir dynamiquement une nouvelle classe, remplacer l'objet par une nouvelle instance qui se chargerait de s'occuper de l'aggregation.
    un truc dans le genre (pseudo code):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function aggregate($object, $classname) {
       $class_name_of_object = get_class($object);
       AGGREGATOR = new $classname();
       eval('class XXXX extends '. $class_name_of_object .' {
          function __call($method, $args) {
             if (method_exists($this, $method)) {
                return call_user_func_array(array($this, $method), $args);
             } else {
                return call_user_func_array(array(AGGREGATOR, $method), $args);
             }
          }
       }');
       $object = new XXXX();
    }

  6. #6
    Membre confirmé
    Profil pro
    CEO
    Inscrit en
    Avril 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : CEO

    Informations forums :
    Inscription : Avril 2002
    Messages : 84
    Par défaut
    Merci pour ces réponses

    Mr N. pourrais tu me donner un exemple simplifié de la première solution ?

    Pour la seconde solution, cela me parait un peu lourd non ?
    et de plus, est ce que les propriétés de mon objets initiales sont conservées ?


    Merci encore

  7. #7
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Je n'ai proposé qu'une solution, et encore ce n'est qu'un embryon de solution, une piste sans savoir si elle est viable

    Donc de quelle(s) solution(s) parles-tu ?

  8. #8
    Membre confirmé
    Profil pro
    CEO
    Inscrit en
    Avril 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : CEO

    Informations forums :
    Inscription : Avril 2002
    Messages : 84
    Par défaut
    Bonsoir,

    je parlais de la méthode par __call()
    sinon avez vous une piste pour faire de l'héritage multiple ?


    Merci

  9. #9
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Oui, l'aggregation
    Mais j'entends aggregation "manuelle" :
    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
     
    interface iavion { function vole(); }
    class avion implements iavion {
      function vole() {
         ...
      }
    }
    interface ibateau { function flotte(); }
    class bateau implements ibateau {
      function flotte() {
         ...
      }
    }
    class hydravion extends avion implements ibateau {
       function flotte() {
          $this->bateau->flotte();
       }
    }

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

Discussions similaires

  1. [POO] PHP 5 - gestion de la persistance
    Par BRAUKRIS dans le forum Langage
    Réponses: 12
    Dernier message: 07/07/2010, 13h34
  2. Réponses: 16
    Dernier message: 06/06/2007, 12h42
  3. Réponses: 2
    Dernier message: 21/10/2005, 11h26
  4. [POO] [PHP 5 CLASSES]Source à part?
    Par Jean_Benoit dans le forum Langage
    Réponses: 3
    Dernier message: 20/10/2005, 11h50
  5. [POO] PHP et la gestion des classes
    Par Acti dans le forum Langage
    Réponses: 7
    Dernier message: 23/09/2005, 00h06

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