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 :

Architecture d'un site en objet, demande d'avis


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Chomeuse
    Inscrit en
    Juillet 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeuse

    Informations forums :
    Inscription : Juillet 2016
    Messages : 36
    Points : 0
    Points
    0
    Par défaut Architecture d'un site en objet, demande d'avis
    Bonjour,

    J'aimerais avoir un avis éclairé sur mon architecture.


    Voici comme ca fonctionne.
    J'ai un index.php qui appel le controleur site() auquel je transmet la requête.
    Via l'url, j'arrive dans /index.php?page=article&fonction=liste
    Dans Site.php j'ai donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $page = new Article($db);    // pointeur PDO
    $html = $page->liste();
    echo $html;
    Article.php / __construct($db)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $this->db = $db;
    $this->model = new ArticleModel();
    $this->vue = new ArticleVue();
    $this->dao = new ArticleDao($this->$db);
    Article.php / liste()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $listeArticle = $this->dao->getListe();
    $html = $this->vue->getListe($listeArticle);
    return $html;
    Pour le moment c'est propre, car simple, j'utilise la classe Article() pour afficher la liste des articles.
    Si je souhaite une autre page pour afficher les articles et les utilisateurs via "/index.php?page=articles", je vais devoir transmettre Article et Utilisateur.

    Site.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $articles = new Articles($db);
    $html = $articles->liste();
    echo $html;
    Articles.php / __construct($db)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $this->article = new Article($db):
    $this->utilisateur = new Utilisateur($db);
    $this->articlesVue = new ArticlesVue();


    Articles.php / liste()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $listeArticles = $this->article->liste($this->utilisateur);
    $htmlListeArticles = $this->articlesVue($listeArticles);
    return $htmlListeArticles;
    Et la ca m'embête, car la classe Article utilise la classe Utilisateur pour créer des utilisateurs récupéré dans la base de données, pour retourner une liste d'objet Article qui contiennent des Utilisateur.
    J'aurais des objets Article et Utilisateur propre, mais au dessus ca sera un sacré bordel.

    Et ce que ca vous parrait cohérent comme fonctionnement ?
    J'aurais des singleton pour les Requete, Connexion etc ....

  2. #2
    Nouveau Candidat au Club
    Femme Profil pro
    Chomeuse
    Inscrit en
    Juillet 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeuse

    Informations forums :
    Inscription : Juillet 2016
    Messages : 36
    Points : 0
    Points
    0
    Par défaut
    Personne ?
    Ca ne saurais pas la bonne section ?

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Je ne sais pas pourquoi les autres ne t'ont pas répondu, mais moi c'est parce que je ne comprends pas ce que fait une partie de ton code, notamment la partie avec utilisateur. Pourquoi /index.php?page=articles récupère des utilisateurs alors que sémantiquement il devrait récupérer une liste des articles (puisque articles est au pluriel). Est-ce qu'il y a un seul ou plusieurs utilisateurs? S'il y a plusieurs utilisateurs, comment fais-tu pour savoir qui c'est, puisque tu ne passes pas l'id de l'utilisateur en paramètre?

    Du coup c'est difficile d'aborder ta vraie question.

    - Pourquoi tu as 3 classes Utilisateur, UtilisateurModel et UtilisateurDAO? Pourquoi as-tu séparé Utilisateur et UtilisateurModel? Même question pour Utilisateurs. C'est une question, je ne dis pas que c'est bien ou pas bien.

    - Tu mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $listeArticles = $this->article->liste($this->utilisateur);
    Mais je ne vois pas de méthode liste() dans ton diagramme des classes, et je ne sais pas ce que ça fait.

    - La solution à ton souci consiste à créer une classe DAO nommée ArticlesUtilisateur($utilisateur) qui récupèrerait toutes les articles écrites par un utilisateur au lieu de confier cette responsabilité à la classe Article. Ainsi, ArticlesUtilisateur peut utiliser Article et Utilisateur, mais tu n'auras plus ton problème de classes imbriquées (Articles contient Utilisateur contient Article contient Utilisateur).

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Chomeuse
    Inscrit en
    Juillet 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeuse

    Informations forums :
    Inscription : Juillet 2016
    Messages : 36
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Tsilefy Voir le message
    Je ne sais pas pourquoi les autres ne t'ont pas répondu, mais moi c'est parce que je ne comprends pas ce que fait une partie de ton code, notamment la partie avec utilisateur. Pourquoi /index.php?page=articles récupère des utilisateurs alors que sémantiquement il devrait récupérer une liste des articles (puisque articles est au pluriel).
    Est-ce qu'il y a un seul ou plusieurs utilisateurs? S'il y a plusieurs utilisateurs, comment fais-tu pour savoir qui c'est, puisque tu ne passes pas l'id de l'utilisateur en paramètre?
    J'ai mis Articles mais j'aurais pu mettre n'importe quoi d'autre, ca n'a pas de lien avec Article.

    Quand je récupère un article dans la base, j'ai pour chaque article un utilisateur_id. Envoyer a Article une instance d'Utilisateur permet a Article de créer un utilisateur a partir de cet Id et de le mettre dans Article.



    - Pourquoi tu as 3 classes Utilisateur, UtilisateurModel et UtilisateurDAO? Pourquoi as-tu séparé Utilisateur et UtilisateurModel? Même question pour Utilisateurs. C'est une question, je ne dis pas que c'est bien ou pas bien.
    Pour séparer le code.
    Article gère ArticleModel, ArticleDao et ArticleVue
    C'est ca, j'ai merdé quand j'ai écris le code, c'est corrigé.


    - La solution à ton souci consiste à créer une classe DAO nommée ArticlesUtilisateur($utilisateur) qui récupèrerait toutes les articles écrites par un utilisateur au lieu de confier cette responsabilité à la classe Article. Ainsi, ArticlesUtilisateur peut utiliser Article et Utilisateur, mais tu n'auras plus ton problème de classes imbriquées (Articles contient Utilisateur contient Article contient Utilisateur).
    Effectivement, c'est une solution.
    Le soucis, c'est qu'en plus d'un article, je vais avoir des mot clé pour les articles, donc une classe MotCle.
    J'imagine mal créer :
    • Article
    • ArticleUtilisateur
    • ArticleUtilisateurMotCle

    Ou plus tard :
    • Article
    • ArticleUtilisateur
    • ArticleUtilisateurMotCle
    • ArticleUtilisateurMotCleLien
    • ArticleUtilisateurMotCle
    • ArticleLien


    Je n'ai pas vraiment de soucis, si on fait comme ca, je ferais avec ...

Discussions similaires

  1. Réponses: 10
    Dernier message: 20/07/2007, 16h02
  2. Demande d'avis sur les couleurs utilisé sur un site
    Par tchoumak dans le forum Mon site
    Réponses: 1
    Dernier message: 29/11/2006, 14h37

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