Arborescence de classes PHP et séquentialité.

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par ortolojf, 16 Mai 2022.

  1. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 572
    J'aime reçus:
    32
    Bonjour

    Je refais mon site https://www.pronostics-courses.fr en mode POO ( pour éliminer les variables globales ), j'ai déjà fait les listes de courses, il n'y a plus que les stats à faire.

    Pour celà :

    J'ai 5 classes PHP type père/filles arborescence classique.

    Mon besoin : Faire en sorte que chaque classe dispose des variables de chaque classe adjacente, tout en s'exécutant après celle-ci.

    Le bug : Si cette première classe dérive de la seconde classe, celle-ci s'exécute avant. ( parent__construct() dans le constructeur de la première classe ). Donc la deuxième classe ne voit pas les variables de l'autre classe.

    Si la deuxième classe dérive de la première classe, la première classe ne dispose pas encore des variables de la deuxième classe, puisque la première classe s'exécute d'abord.

    Il s'avère, que je voudrais que cette arborescence de classes soit en mode : "a un" et non pas "est un".

    Comment résoudre cette problématique ?

    Merci beaucoup.
     
  2. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 572
    J'aime reçus:
    32
    Bon, bon...

    Théoriquement :

    Composition au lieu d'héritage.

    Chacune des classes calcule des variables et les apporte à la classe suivante.

    Donc :

    Classe terminale : "extends ROOT"

    classes suivantes : __construct($class_preced);

    Cà risque de me faire des duplications nombreuses de variables ?

    Quelle est la solution pour des relations "a un" entre classes ?

    Merci.
     
  3. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 572
    J'aime reçus:
    32
    Trouvé :

    Composition forte.

    PHP:

    $pronos 
    = new PRONOSTICS_COURSES_NOUVELLES($id);
     
    $pronos2 = new PRE_MOTEUR_NOUVELLE($pronos);

    $pronos3 = new MOTEUR_STATS($pronos);

    $pronos4 = new MOTEUR_STATS_NEW ($pronos);

    $pronos5 = new NEW_TMP_AFFIC_NEW($pronos);


    Dans chaque classe, je pointe les variables de classe pseudo globales avec le pointeur $pronos.

    J'ai été obligé de modulariser, car certaines classes sont communes pour différentes urls.

    Honte à moi.

    Super POO...

    Merci beaucoup.
     
  4. rick38
    rick38 WRInaute passionné
    Inscrit:
    23 Février 2013
    Messages:
    2 012
    J'aime reçus:
    348
    Ben oui, si on veut qu'un objet ait accès à un autre objet, on le lui passe tout simplement, puis il le stocke dans une propriété et y accède comme n'importe quelle autre propriété.

    La problématique est d'accéder aux propriétés private, a priori en PHP il y a la Reflection pour ça.
     
  5. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 572
    J'aime reçus:
    32
    Bonjour rick38

    Le $this sur la première classe est envoyé vers les autre classes comme paramètre.

    Il y a 4 classes recevant le this.

    Si le this est une variable locale pour ces constructeurs, celà semble logique que son contenu ne change pas de classe en classe ?

    J'ai un bug avec une variable de classe qui ne change pas.

    Pourtant d'autres variables de classe changent.

    Je vais expertiser.

    Merci beaucoup de ton aide.

    Amicalement.
     
  6. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 572
    J'aime reçus:
    32
    Bonjour rick38

    Le pointeur $this de la première classe est le paramètre du constructeur de la deuxième classe.

    Mais le contenu de $this n'est pas modifié car il est envoyé comme paramètre à chaque classes.

    Comment faire pour partager les data de plusieurs classes ?

    Merci.

    PHP:

    <?php

    class DECLENCHEMENT {

        public 
    $pronos        null;
        public 
    $pronos2        null;
        public 
    $pronos3        null;
        public 
    $pronos4        null;
        public 
    $pronos5        null;

        public function 
    __construct($id) {
            
    ob_start();

            
    $this->pronos = new PRONOSTICS_COURSES_NOUVELLES($id);

            
    $this->pronos2 = new PRE_MOTEUR_NOUVELLES($this->pronos);

            
    $this->pronos3 = new MOTEUR_STATS($this->pronos);

            
    $this->pronos4 = new MOTEUR_STATS_NEW($this->pronos);

            
    $this->pronos5 = new NEW_TMP_AFFIC_NEW($this->pronos);

            
    ob_end_flush();

            return 
    $this;
        }
    }

    $id "1,3";
    $pronostics = new DECLENCHEMENT($id);

    ?>

     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 163
    J'aime reçus:
    338
  8. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 572
    J'aime reçus:
    32
    Bon

    J'ai trouvé.

    Problème résolu.

    Cà me rappelle Einstein, la Théorie et la Pratique. ;)

    Amicalement.
     
  9. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 163
    J'aime reçus:
    338
    Avis aux futurs visiteurs qui tomberaient sur ce post : c'est un exemple de ce qu'il ne faut surtout pas faire.
     
Chargement...
Similar Threads - Arborescence classes PHP Forum Date
Arborescence étrange - Pagination d'articles Crawl et indexation Google, sitemaps 15 Décembre 2021
Arborescence et intégration mot clé + ville Débuter en référencement 27 Septembre 2017
Arborescence d'un site e commerce Débuter en référencement 21 Mars 2017
Avis refonte - changement d'arborescence et de NDD Problèmes de référencement spécifiques à vos sites 13 Février 2016
Utilisation du singulier/pluriel dans l'arborescence Rédaction web et référencement 28 Septembre 2015
L'arborescence, oui mais Débuter en référencement 5 Septembre 2015
Arborescence d'un site Débuter en référencement 8 Janvier 2015
Arborescence : singulier ou pluriel ? Débuter en référencement 22 Septembre 2014
Récupérer l'arborescence d'un site Administration d'un site Web 2 Juillet 2014
Arborescence virtuelle, comment conserver les liens images, css, etc URL Rewriting et .htaccess 27 Novembre 2012
Changement nom de domaine avec arborescence identique : une règle ? URL Rewriting et .htaccess 6 Août 2012
Vos avis sur "l'arborescence des <title>" en ecommerce e-commerce 5 Juillet 2012
Arborescence virtuelle des répertoires ou urls courtes ? Référencement Google 7 Juin 2012
Arborescence site et url des pages Débuter en référencement 18 Mars 2012
Arborescence en Silo et Liens internes en NoFollow Netlinking, backlinks, liens et redirections 17 Janvier 2012
Quelle arborescence pour référencement Référencement Google 18 Décembre 2011
Arborescence d'un site avec blog Rédaction web et référencement 7 Septembre 2011
Niveau d'arborescence Référencement Google 24 Août 2011
Afficher l'arborescence d'un site sous Google Débuter en référencement 22 Juillet 2011
Je ne trouve pas l'arborescence de Google Shopping Google : l'entreprise, les sites web, les services 10 Mars 2011