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] Classe dans une classe


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 32
    Points : 22
    Points
    22
    Par défaut [POO] Classe dans une classe
    Bonjour,

    j'utilise deux classes auth et user qui sont dans deux fichiers différents.
    Seuelement je dois utiliser des opérations de la classe user dans la classe auth.

    Aucun de ces 2 fichiers ne sera appelé directement (création d'un site web)
    Par exemple il y aura un fichier index avec instanciation des 2 classes au début.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $auth=new auth();
    $user=new user()
    Si dans la classe auth je fais appelle à une opération de la classe user de cette façon, est-ce correcte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class auth() {
    ......
    $user->login();
     
    }
    j'ai essayé de mettre un global $user dans la classe auth mais eclipse me dit que la syntaxe n'est pas correct.

    Qu'en pensez-vous ?

  2. #2
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    J'en pense qu'il te faudra probablement faire des include_once (n'oublie pas le _once, c'est pour s'assurer que la classe n'est inclue qu'une fois) pour avoir acces au code d'une classe depuis une autre.

    De même, passer user en parametre plutot que d'utiliser un global est plus propre.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    oui au départ j'ai utilisé des include_once.
    et j'ai instancier la classe user dans la classe auth avec un $user=new user() en debut de fichier.
    mais si ensuite j'instancie la classe auth dans un fichier index.php et que je réinstancie une nouvelle fois user dans ce fichier, n'est ce pas redondant. Je sais que c'est tout à fait possible de faire plusieurs instantiations d'une même classe. Mais je trouve juste cela redondant. Est-ce la bonne méthode ou pas ?
    PS : je débute en POO.

    Cependant il me reste une question : voici mon code du fichier auth.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    include_once('user.php')
     
    class auth {
    définitions des propriétés et opérations
    }
    dois-je instancier la classe user avant la declaration de la classe auth ou dans la classe ?


    Merci

  4. #4
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Est-ce que tu ne peux pas tout simplement instancier une premiere fois ta classe user dans le index.php, puis passer la variable à ta classe auth, évitant ainsi la réinstanciation ?
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    c'est ce que j'avais fait au tout début (mais dans ce cas avec eclipse pdt je n'ai pas acces aux méthodes de la classe user dans la classe auth par autocomplétion)
    par contre si j'instancie user dans index.php, dans la classe auth dois-je mettre var $user ?

  6. #6
    Membre du Club Avatar de eexit
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 50
    Points
    50
    Par défaut
    Bonsoir,

    Le nom de l'objet que tu associe à l'instanciation d'une class peut être celui que tu voudras.

    Si tu as peur de créer trop d'instances de ta class, avant de l'instancier, tu peux vérifier si ta variable $user est un objet et si elle est une instance de la class user.

    -> is_object()
    -> instanceof

    Bonne soirée
    Etudiant L3 Informatique
    --
    Twitter | Blog | Website

  7. #7
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    perso je dirais que ca dépend de ton modèle. Par exemple :
    - est-ce que t'as besoin de user dans plusieurs méthodes dans auth ?
    - est-ce que user est indispensable pour le fonctionnement de auth ?
    - Que fait auth ? car login() semble être une méthode d'authenfication, donc est-ce que ce serait pas plutôt, login() qui devrait faire appel à auth (et/ou peut-être retourner une instance de user)?

    Sans plus d'infos la méthode de Rakken me semble la meilleure. (à savoir ne pas stocker de user dans auth mais le passer à la méthode)
    Bye
    Vive les roues en pierre

  8. #8
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    avec eclipse pdt je n'ai pas acces aux méthodes de la classe user dans la classe auth par autocomplétion
    Eclipse pdt gere mal l'autocompletion tout seul, alors il faut l'aider un peu.
    Pour cela, il faut que tu mettes des commentaire style "javadoc".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      /**
       * Blabla qui explique la fonction 
       * @param string $str : une string
       * @param nomDeMaClassePerso $mcp
       */
      public function uneFonction($str, $mcp) {
        $mcp->...    // Et la, magie, on a l'autocompletion !
        ...
      }
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Merci pour vos réponses.
    Si je m'appuie sur cela :
    Sans plus d'infos la méthode de Rakken me semble la meilleure. (à savoir ne pas stocker de user dans auth mais le passer à la méthode)
    comment passer l'instanciation de user dans auth ? je déclare var $user dans la class auth ?

  10. #10
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Ben une classe instanciée, ca n'est ni plus ni moins qu'une bête variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $user = new user();
    $auth = new auth($user);
    // ou encore
    $auth->ma_fonction($user);
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Ok merci Rakken
    je venais juste de gribouiller cela au brouillon. Ca ma rassure car j'ai la même chose que toi.

    Merci bcp

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Moi j'utilise un __autoload ... Ca te permet de ne plus te soucier des problèmes d'include...

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

Discussions similaires

  1. Poo : utiliser une classe dans une classe ?
    Par devoluti0n dans le forum Langage
    Réponses: 2
    Dernier message: 28/10/2010, 17h03
  2. [POO] Une Classe dans une Classe. C'est possible?
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2006, 22h02
  3. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  4. Réponses: 19
    Dernier message: 02/02/2006, 23h30
  5. Une classe dans une classe...
    Par Baquardie dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2005, 19h36

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