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 :

Développement orienté objet + Php


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2009
    Messages : 171
    Points : 172
    Points
    172
    Par défaut Développement orienté objet + Php
    Bonjour à tous,

    Voila, je viens vers vous avec la question suivante que je vais essayer de vulgariser pour que ce soit facilement compréhensible.

    Disons que j'ai les 3 tables suivantes en base de données :
    - user : id / nom / prenom
    - groupe : id / nom_du_groupe
    - user_groupe : id_user / id_groupe

    Un user pouvant appartenir à 1 ou n groupe(s).

    Comment créer mes classes en Php ?
    Je crée une classe pour chaque table ?
    La table user_groupe doit avoir sa propre classe ou alors je la gère depuis ma class user ?

    Merci d'avance pour vos conseils

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ce qu'il faut savoir, c'est que le modèle est constitué d'entités fonctionnelles : une personne, un produit, une commande...
    Dans ton cas, il y a 2 entités : l'utilisateur et le groupe. Donc deux classes : User et Groupe.
    Après il va falloir déterminer comment tu relies les deux. En général, on met une liste de l'un dans l'autre.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2009
    Messages : 171
    Points : 172
    Points
    172
    Par défaut
    Merci Celira pour la réponse

    La liaison sera effectué par une table de lien, que je nomme genre lnk_personne_groupe.
    Au niveau de la conception en base de données, c'est assez clair de mon côté.

    En revanche, la gestion en php de ces liaisons m'est plutôt étrangère.

    Je pense ajouter une fonction dans ma classe personne qui serait du style addPersonneGroupe($id_groupe), qui permettrait juste d'ajouter le lien id_user / id_groupe dans ma table de lien.
    Est-ce correct selon vous ?

    Je prends un autre exemple. Je prévois le Multilingue sur mon site, du coup le groupe sera un peu plus complexe :
    - table groupe (id / code)
    - table groupe_i18n (id / id_groupe / id_langue / nom)
    - table langue (id / code / nom)

    Du coup, pour ajouter un nom de groupe dans ma classe, il faudrait :
    - définir une classe groupe avec les attributs id / code
    - ajouter une méthode addGroupeNom ($nom, $langue)

    Ou alors il faut créer un attribut nom et langue dans ma classe groupe ?

    Bref, je ne sais pas si je suis assez clair !

    Merci pour vos retours !

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Hum.. je ne vois pas trop le concept de groupe internationalisé... Est-ce que tu veux dire qu'à un groupe est rattaché une ou plusieurs langues ? D Quel est l'intérêt ? pouvoir obtenir les langues de l'utilisateur ?

    Par exemple : "Groupe France" serait rattaché à "Français" alors que "Groupe Suisse" serait rattaché à "Français", "Allemand" et "Italien". Et un utilisateur qui appartient à "Groupe France" ne peut voir le site qu'en français, alors qu'un utilisateur qui appartient à "Groupe Suisse" a le choix entre les 3 langues ?

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2009
    Messages : 171
    Points : 172
    Points
    172
    Par défaut
    En fait j'ai pris la notion de groupe comme exemple, je ne sais pas si elle est très pertinente.
    Mais le cas est représentatif de ce que je souhaite faire.

    Disons que j'ai les groupes suivants (j'invente, ce n'est pas du tout mon intention) :
    - personne mineur
    - personne majeur
    - personne avec cheveux brun
    - personne avec cheveux blond

    Je veux pouvoir traduire la description de ces groupes. C'est à dire, si l'utilisateur choisit anglais sur ma page, il aura accès à :
    - minor person
    - major person
    - etc...

    Si il est en espagnol, il verra le nom des groupes en espagnol.

    D’où mon exemple

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    L'internationalisation de l'application, c'est un problème totalement différent. La seule chose dont tu as besoin dans ton modèle pour ça, c'est éventuellement de mémoriser la langue de l'utilisateur avec un champ langue dans ton objet User. Tout le reste, c'est de la technique, c'est à gérer à part.

    En fait, ton modèle n'est pas dépendant de l'implémentation. Idéalement, tu dois pouvoir le définir sans savoir dans quel langage tu vas coder et de quelle façon tu vas le stocker.

    Par exemple :
    Modèle :
    User---Groupe (association N-N, many-to-many)
    Implémentation :
    • classe User, avec une propriété listeGroupId qui contient la liste des ids des groupes liés à l'utilisateur et une méthode addGroupToUser
    • classe Groupe, avec une propriété listeUsers qui contient la liste des User du groupe et une méthode addUserToGroup

    Stockage :
    • Table USER
    • Table GROUP
    • Table USER_GROUP (table de liaison, ne contient que les ids de 2 tables liées, avec des clés étrangères)


    Si tu pars de la base, c'est comme si, pour fabriquer une table, tu commençais par tailler des morceaux de bois, tu disais "oh tiens celui-là a une forme de pied" et hop ! tu l'utilises comme pied de ta table.
    Si tu es un menuisier expérimenté, ce n'est pas un problème, parce que en réalité tu as tracé le plan dans ta tête, tu ne l'as juste pas écrit. Si tu es un menuisier débutant, en revanche, tu es en train de reproduire un pied de table que tu as déjà vu sans vraiment de plan, et le jour où on te commande un guéridon, tu es coincé parce que tu ne sais pas tracer le plan d'un pied de guéridon.

    Pour revenir à ton problème d'I18n : tu peux parfaitement stocker tes langues et tes traductions en base, mais elles ne font pas nécessairement partie du modèle.

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2009
    Messages : 171
    Points : 172
    Points
    172
    Par défaut
    Parfait, c'est exactement ce que j'avais besoin de savoir !

    Etant bien plus dans les bases de données que dans le dev php depuis de nombreuses années, j'ai préféré commencé par la partie que je maitrise le mieux.


    Maintenant il n'y a plus qu'à.

    Merci en tout cas !

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

Discussions similaires

  1. [MySQL] M'initier à l'orienté objet PHP
    Par dancom5 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/09/2013, 23h08
  2. [Debat] Php Orienté Objet et les bibliotheques
    Par kagura dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 21/11/2006, 18h55
  3. [POO] Cours sur le PHP orienté objet
    Par gforce dans le forum Langage
    Réponses: 12
    Dernier message: 06/11/2006, 10h20
  4. [POO] Orienté Objet en PHP
    Par Amine_sas dans le forum Langage
    Réponses: 1
    Dernier message: 15/08/2006, 19h56
  5. [POO] PHP et l'Orienté Objet
    Par kagura dans le forum Langage
    Réponses: 4
    Dernier message: 12/05/2006, 19h01

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