Partage
  • Partager sur Facebook
  • Partager sur Twitter

Encapsulation et base de données

Sujet résolu
    15 janvier 2018 à 21:02:37

    Bonjour à tous ! J'ai quelques questions sur la compréhension de la programmation orienté objet, dont celle de l'encapsulation avec des classes tels qu'une qui s'appelerait User, voici mes questions :

    • Pourquoi respecté le principe d'encapsulation ici alors qu'en procédural on peut déjà empêcher que l'utilisateur donne un nom invalide ?
    • Si je souhaite faire une contrainte particulière sur le nom d'utilisateur (donc utiliser des regex), doit je vérifier ces conditions lors de l'envoie des données, où dans les setters de la classe elle-même ?
    • Si j'ai une table posts avec un champ content (TEXT NOT NULL), on peut tout de même écrire un titre de zéro caractère, si je souhaite que non, doit-je vérifier cette contrainte directement dans la table avec un trigger ou un check, dans les setters de la classe Post, où lors du traitement des données $_POST ?

    Merci beaucoup pour vos réponses :)

    • Partager sur Facebook
    • Partager sur Twitter

    Envie de devenir un développeur de mods sur GTA V ? --> Développez votre premier mod sur GTA V

      15 janvier 2018 à 21:29:39

      Alors,

      1° tu n'as pas compris le principe d'encapsulation, ce n'est pas d'empêcher l'utilisateur d'accéder aux données directement, mais au développeur de passer par des méthode de validation ;),

      2° dans le setter et toute méthode ayant le nom d'utilisateur pour paramètre (donc appeler systématiquement le setter / getter)

      3° Tu traites tes données avec strlen(trim($chaine)) > 0 en PHP et la contrainte SQL fera le reste => gestion des erreurs

      ++

      • Partager sur Facebook
      • Partager sur Twitter
        16 janvier 2018 à 18:43:56

        Merci de ta réponse :)

        L'encapsulation est donc utilisé pour protéger les variables du développeur qui utilisera la classe, et non de l'utilisateur ^^

        Je dois ainsi vérifier que le nom d'utilisateur respecte certaines règles dans le setter, mais comment savoir si toutes ces règles sont respectés avant l'insertion dans la base de données, pour ne pas insérer n'importe quoi ?

        Pour ta troisième réponse, je dois donc ne pas faire de contrainte en SQL et vérifier directement en PHP ? Donc je vérifierais cette condition dans un setter si j'ai bien compris, pour le reste (tels que deux utilisateurs qui risquent d'avoir le même nom) je dois gérer les erreurs que renvoie MySQL, est-ce bien cela ?

        • Partager sur Facebook
        • Partager sur Twitter

        Envie de devenir un développeur de mods sur GTA V ? --> Développez votre premier mod sur GTA V

          16 janvier 2018 à 19:56:21

          RamechYT a écrit:

          L'encapsulation est donc utilisé pour protéger les variables du développeur qui utilisera la classe, et non de l'utilisateur ^^

          Bah perso, tu as déjà essayé d'utiliser une classe de WAMP ?


          Je dois ainsi vérifier que le nom d'utilisateur respecte certaines règles dans le setter, mais comment savoir si toutes ces règles sont respectés avant l'insertion dans la base de données, pour ne pas insérer n'importe quoi ?

          Là c'est toi qui dois adapter les règles de gestion, pas nous

          Pour ta troisième réponse, je dois donc ne pas faire de contrainte en SQL et vérifier directement en PHP ? Donc je vérifierais cette condition dans un setter si j'ai bien compris, pour le reste (tels que deux utilisateurs qui risquent d'avoir le même nom) je dois gérer les erreurs que renvoie MySQL, est-ce bien cela ?

          Non la contrainte va lever une erreur SQL, donc tu lances la requête INSERT par exemple et si elle retourne une erreur c'est que la contrainte (une seule par table par exemple) est forcée => UNIQUE INDEX (nom,prenom) par exemple

          • Partager sur Facebook
          • Partager sur Twitter
            16 janvier 2018 à 20:10:21

            Merci beaucoup pour tes réponses, je passe en résolu :)
            • Partager sur Facebook
            • Partager sur Twitter

            Envie de devenir un développeur de mods sur GTA V ? --> Développez votre premier mod sur GTA V

            Encapsulation et base de données

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown