Partage
  • Partager sur Facebook
  • Partager sur Twitter

[POO PHP] Qu'est ce qu'un namespaces ?

Quésako ?

Sujet résolu
    29 novembre 2018 à 17:57:03

    Bonjour,

    J'ai suivi le cours sur l'architecture MVC mais je n'ai pas compris le passage sur les namespaces. 

    Pourriez-vous m'éclaircir ce sujet ?

    Merci.

    -
    Edité par chpe1 7 décembre 2018 à 23:01:00

    • Partager sur Facebook
    • Partager sur Twitter
      30 novembre 2018 à 11:22:13

      Imagine que tu as une classe User dans ton site PHP. Tu souhaite utiliser un morceau de code que tu as trouver sur packagist (par exemple) mais ce morceau de code contient lui aussi une classe User. Sans namespace, tu serais obligé de changer le nom de ta classe pour ne pas confondre alors qu'avec les namespace tu peux utiliser les deux. Un namespace c'est comme une boîte dans laquelle tu peux mettre du code (classes et fonctions).

      namespace MonApplication;
      
      use \Lib\User;
      use \MonTruc\User as MonUser;
      
      class Truc {
       
       private User $user;
       private MonUser $monUser;
      
      }



      • Partager sur Facebook
      • Partager sur Twitter
        7 décembre 2018 à 22:40:14

        Désolé. Ca vient sûrement de moi mais je n'ai toujours pas compris. 

        Ça sert à quoi en fait ? A préciser le nom de la classe ? 

        • Partager sur Facebook
        • Partager sur Twitter
          7 décembre 2018 à 22:50:14 - Message modéré pour le motif suivant : La demande de l'équipe de modération a été honorée


          Pas d'aide concernant le code par MP, le forum est là pour ça :)

            8 décembre 2018 à 2:43:56

            En php; comme dans d'autres langages; on tente de choisir des noms des classes, variables et fonctions qui ne se mélangent pas. Si l'ordinateur n'arrive pas à faire la différence entre chaque alors il y a un potentiellement bug.

            public class A {
              private bool $ok;
              private int $cpt;
            }
            
            public class A {
              private string $name;
            }
            
            public class A {
              private float $price;
            }

            Dans la plupart des cas, c'est facile de respecter cette règle puisqu'il suffit de changer le nom quand il y a un doublon.

            public class A {
              private bool $ok;
              private int $cpt;
            }
            
            public class B {
              private string $name;
            }
            
            public class C {
              private float $price;
            }

            Mais quand on utilise du code qu'on n'a pas écrit nous même, il arrive parfois qu'il y ait un nom de classe identique à un autre qu'on utilise déjà. Quand le code est petit, c'est facile de tout renommer mais quand il fait plusieurs centaines de milliers de lignes, on n'a pas envie de renommer tous les doublons. On utilise alors les namespaces qui permettent (entre autre) de renommer quelque chose au moment où on l'utilise plutôt que partout.

            // fichier User.php : 
            namespace \MonTruc;
            class User {
              private int $id;
            }
            
            
            // un autre fichier User.php : 
            namespace \Lib;
            class User {
              private string $login;
            }
            
            
            // un autre fichier Truc.php : 
            namespace MonApplication;
             
            use \Lib\User;
            // on change le nom de façon temporaire, valable juste pour ce fichier Truc.php
            use \MonTruc\User as MonUser; 
            
             
            class Truc {
             
             // un objet User avec un login :
             private User $user;
            
             // un objet User avec un id : 
             private MonUser $monUser;
             
            }

            Un namespace c'est comme un dossier. Tu ne peux pas avoir deux fichiers de même nom dans un dossier mais tu peux avoir deux fichiers de même nom dans deux dossiers différents.

            -
            Edité par Benevolar 8 décembre 2018 à 2:46:38

            • Partager sur Facebook
            • Partager sur Twitter
              9 décembre 2018 à 20:38:28

              D'accord 👍. C'est plus clair. Merci à toi d'avoir pris un peu de temps
              • Partager sur Facebook
              • Partager sur Twitter

              [POO PHP] Qu'est ce qu'un namespaces ?

              × 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