Bonjour,
Je suis actuellement en train de mettre en place un dashboard Google Analytics pour tous mes projets, et j'aimerais avoir un peu d'aide pour ce qui est de la construction orientée objet.

En effet, mon objectif est d'avoir une classe qui puisse gérer un compte Google Analytics = class Compte
Mais aussi une qui gère les vues pour chaques compte = class Vue

Sachant qu'un compte à plusieurs vues et que la plupart de mes fonctions s'appliquent à la vue, comment faire pour avoir l'architecture la plus cohérente et logique possible.

Mon point de départ était le suivant :

class Compte{
    private $id;
    private $nom;
    private $vues;
    public function __construct($nom, $id){
        $this->nom = $nom;
        $this->id = $id;
    }

    public function getId(){
        return $this->id;
    }
    public function getNom(){
        return $this->nom;
    }

}

class Vue extends Compte{

}

Voilà l'organisation que j'ai voulu appliquer, mais quelque chose me dit que ce n'est pas du tout la meilleure façon de faire.

Mon objectif est donc de récupérer toutes les vues associées à un compte avec une simple fonction mais je ne sais pas trop comment m'y prendre.

Je ne vois pas quoi rajouter mais si vous voulez plus de détails n'hésitez pas à me demander.

Merci d'avance !

3 réponses


Salut,

Tu devrais commencer par regarder la formation consacrée à la POO en PHP.
Pour ma part, je partirais plutôt sur une propriété private $views; (qui contiendrait toutes les vues lié au compte) dans ta classe compte, puis pour chaque nouvelle vue je rajouterais une entrée à ce tableau $views[$view_id] = new View(); via une méthode public function createView($view_id); (ce n'est qu'un exemple). Un peu de la façon dont @Grafikart a géré sa classe Router.
De cette façon, tu peux créer plusieurs instances de Compte, puis y associer une ou plusieurs vues. Cela t'évite également d'avoir à la classe Vue d'hériter de la classe Compte (ce n'est pas pertinent ici car une vue est indépendante du compte au sens fonctionnel).

Merci beaucoup, ça me parait beaucoup plus pertinent que ce que j'envisageais de faire, du coup j'oublie juste la notion d'héritage et je crée une classe Vue indépendante ?

Pour commencer, est-ce que tu es familier et à l'aise avec le concept de POO ?