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 :

association de classe : vérifie-t-on l'existence de l'objet ? [POO]


Sujet :

Langage PHP

  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 508
    Billets dans le blog
    1
    Par défaut association de classe : vérifie-t-on l'existence de l'objet ?
    Bonjour,

    pour qu'une classe O1 en sollicite une autre(O2), il semble habituel que la classe O1 comporte un attribut qui soit un pointeur sur un objet de la classe O2. Ainsi il devient possible qu'une méthode d'un objet de O1 appelle une méthode de l'objet de la classe O2.
    Par exemple :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class O1 {
    private O2 $pointeur_sur_O2;
     
    function une_methode_de_O1(){
        $pointeur_sur_O2->une_methode_de_O2();    }
    }

    Qu'est-ce qui prouve que l'objet $pointeur_sur_O2 existe ? Si c'est pas le cas, une erreur PHP va s'en suivre...Faut-il vérifier avant l'appel de la méthode, l'existence de l'objet ?

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    rien ne le prouve, par contre tu peux forcer sa présence via le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class O1 
    {
        private $pointeur_sur_O2;
     
        public function __construct(O2 $o2)
        {
            $this->pointeur_sur_O2 = $o2;
        }
     
        public function une_methode_de_O2()
        {
            $this->pointeur_sur_O2->une_methode_de_O2();    
        }
    }
    Fais attention, n'oublie jamais de déclarer la visibilité d'une fonction public | private | protected enfin n'oublie pas que pour manipuler des variables de l'instance de classe courante, tu dois faire appel au pointeur $this (tu l'avais oublié dans ton code)
    Prends l'habitude de présenter ton code avec soin, ça sera toujours ça de moins à faire plus tard. Tu sais, c'est beaucoup plus confortable quand ça devient un automatisme et pour que cela le devienne il faut s'y prendre le plus tôt possible.

  3. #3
    Invité
    Invité(e)
    Par défaut
    @rawsrc
    Bon courage !

    Laurent n'en est qu'à la page 3 du bouquin !...

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 508
    Billets dans le blog
    1
    Par défaut
    @rawsrc :
    Merci pour ta réponse et tes corrections. Oui, j'avais oublié $this et de plus, en déclarant la propriété $pointeur_sur_O2, j'ai été influencé par des exemples dans d'autres langages et du coup, j'ai indiqué son type, ce qui ne se fait pas en PHP.

    @jreaux62 :
    t'exagère : p.69 (chapitre 5).

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private O2 $pointeur_sur_O2;
    sera possible en PHP 7.4 (version prévue fin nov 2019)

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

Discussions similaires

  1. Association entre classes en java
    Par Mystic eyes dans le forum Rational
    Réponses: 2
    Dernier message: 07/03/2011, 09h20
  2. Associer une classe à une zone en MFC
    Par fog4000 dans le forum MFC
    Réponses: 1
    Dernier message: 22/06/2007, 14h11
  3. Evénement associé à une classe
    Par AlexFred dans le forum VBA Access
    Réponses: 9
    Dernier message: 09/02/2007, 11h39
  4. approche objet en python...associer des classes.
    Par preacher_man dans le forum Général Python
    Réponses: 9
    Dernier message: 06/01/2006, 15h21
  5. [AS2] Association de classe
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 20/07/2005, 11h11

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