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] Set la classe qui instancie dans la classe instancié.


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 19
    Points : 12
    Points
    12
    Par défaut [POO] Set la classe qui instancie dans la classe instancié.
    Bonjour,

    Je vous confirme que ma question fait un peu philosophique. Je vais essayé d'être beaucoup plus claire.
    Le but de ma petite librairie est de faire un menu comportant des onglets qui ont la possibilités d'avoir des sous-menus de manière récurrente.
    Pour cela j'ai deux classes une classe Menu et une classe Onglet.
    Dans la classe Menu, on peut ajouter des objets Onglet Et dans la classe Onglet on peut ajouter des objets Menu pour faire des sous menus.
    De plus dans la classe Menu, on a une propriété niveau qui permet de connaitre si c'est un menu ou sous-menu ou un sous-sous-menu.
    Ma question en php est : Est ce qu'on peut connaitre le niveau du menu dans l'objet instancié ici Onglet, ainsi je pourrai set de manière dynamique le sous-menu par rapport au niveau du menu conteneur de l'Objet Onglet?

    N'hésitez pas à me dire si vous êtes perdu, merci pour votre aide.

    Starfiko

  2. #2
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut
    bonjour,

    une structure de ce genre fait tout à fait l'affaire (adaptation du pattern hierarchical)

    Nom : hierachical.png
Affichages : 82
Taille : 16,7 Ko

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Elle est superbe cette structure, je n'y avais pas pensé.
    Pour être sur que j'ai bien compris l'idée (je suis novice )
    Dans l'abstract Menu, on déclare la propriété lvl en Constante ainsi tout les abstracts Menu liés aux objets sont ainsi liés entre eux et on peut récupérer entre guillement le lvl du menu parent, si on ne l'incrémente pas entre temps. C'est exacte?

  4. #4
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par starfiko Voir le message
    Dans l'abstract Menu, on déclare la propriété lvl en Constante ainsi tout les abstracts Menu liés aux objets sont ainsi liés entre eux et on peut récupérer entre guillement le lvl du menu parent, si on ne l'incrémente pas entre temps. C'est exacte?
    Pas tout à fait, la solution proposée ici n'est que l’implémentation du pattern Hierarchical (qu'on retrouve partout, dans les treeView, les menus, les gestions de fichiers/répertoires, etc; bref, partout ou on a besoin d'une liste - éventuellement vide - d'objets du même type - ou dérivés - que l'objet contenant la liste ... ouf !! ) introduite dans le schéma par la relation "Enfants".

    la relation "Parent" est un ajout au modèle de base implémentée par un pointeur sur un objet du même type que l'objet en cours (ou un de ses dérivés).

    Pour obtenir le niveau (lvl) d'un objet particulier par rapport à l'objet racine ( le "Menu" principal ), on peut - via un appel récursif - l'obtenir à bon compte en appelant la fonction GetLevel du parent (si on en a un ) et d'ajouter 1 au résultat renvoyé par le parent. Si on n'a pas de parent, on renvoi tout simplement 1 (l'objet est le premier) ce qui donne(en C#) :

    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
     
            // version "explicite"
            public int GetLevel()
            {
                if (this.Parent == null) 
                    return 1; 
                else 
                    return Parent.GetLevel() + 1;
            }
     
            // version "condensée"
            public int GetLevel()
            {
                return this.Parent == null ? 1 : Parent.GetLevel() + 1;
            }

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Merci, c'est plus claire. Je vais essayer cette architecture. Autre petite question, après je te laisse tranquille, j'ai cherché d'autre architecture mais j'ai un peu rien trouvé. Aurais-tu des liens ou des mots clés, des tutoriels pour apprendre des architecture ou d'autre nom des architectures classiques?

  6. #6
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par starfiko Voir le message
    Merci, c'est plus claire. Je vais essayer cette architecture. Autre petite question, après je te laisse tranquille, j'ai cherché d'autre architecture mais j'ai un peu rien trouvé. Aurais-tu des liens ou des mots clés, des tutoriels pour apprendre des architecture ou d'autre nom des architectures classiques?
    en voici un http://rpouiller.developpez.com/tuto...-gang-of-four/ par Regis Pourrier, certes pour Java mais qui explique clairement des modèles de conception éprouvés, à consommer sans modération !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Un grand merci pour toutes ces infos et ton aide.

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

Discussions similaires

  1. Instanciation dans une classe et hors de la classe
    Par HNoury dans le forum Langage
    Réponses: 4
    Dernier message: 21/10/2010, 16h24
  2. [PEAR][HTML_QuickForm] Instanciation dans une classe
    Par Bownobo dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/09/2008, 16h38
  3. Réponses: 6
    Dernier message: 17/07/2008, 18h10
  4. Réponses: 1
    Dernier message: 02/05/2008, 20h34
  5. Methode pour recuperer la classe qui instancie une JFrame
    Par ceres02 dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 07/08/2007, 15h47

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