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] Appeler une méthode après la création d'un objet


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 35
    Points
    35
    Par défaut [POO] Appeler une méthode après la création d'un objet
    Bonjour,

    J'aimerais réduire quelques lignes inutiles en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uneFonction( (new Objet())->methode() );
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $obj = new Objet();
    $obj->methode();
    uneFonction( $obj );
    est-ce qu'il y a moyen de faire un truc du style en php ?

  2. #2
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Tes codes ne font pas la même chose. Dans le 2iem, tu passes $obj à uneFontion() alors que dans le 1er, tu passes le résultat de $obj->methode().

    En tout cas, non, on ne peut pas faire (new Objet())->methode()

    Ca fait partie des limitations extrêmement frustrantes de la grammaire de php.

  3. #3
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Si tu appliquais les principes de POO cela donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function my_function(myClass $obj){
        $method_value = $obj->method();
        // do with $method_value
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my_function(new myClass);
    Etant donné qu'on dit explicitement que la fonction my_function ne peut recevoir que des éléments de la classe myClass (ou d'une quelconque interface), my_function peut être sûr de trouver method() comme méthode de l'objet.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par metagoto Voir le message
    Tes codes ne font pas la même chose. Dans le 2iem, tu passes $obj à uneFontion() alors que dans le 1er, tu passes le résultat de $obj->methode().
    effectivement, mais j'aurais pu m'en sortir avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function methode()
    {
      // ...
      return $this;
    }
    En tout cas, il n'y a pas de solution miracle puisque la-dite my-function n'est pas la mienne, mais une méthode de ZendFramework.
    Je ne peux donc pas y toucher !

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/06/2008, 14h38
  2. Réponses: 7
    Dernier message: 19/03/2007, 20h25
  3. Réponses: 3
    Dernier message: 05/10/2006, 18h52
  4. [POO] Appeler une méthode redéfinie de la classe parente
    Par Djakisback dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2006, 22h56
  5. [POO]Appelé une méthode d'une classe mère
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2005, 14h44

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