recherche

Maison  >  Questions et réponses  >  le corps du texte

Lorsque PHP utilise un espace de noms, pourquoi devrait-il être précis sur une classe sous l'espace de noms ?

Le code sous le fichier Tool.class.php est :

espace de noms CompanyTool ;

classe Outil{

}

Ma question est de savoir pourquoi si vous utilisez la classe Tool dans d'autres fichiers, vous devez écrire comme ceci : utilisez CompanyToolTool

Je pensais qu'il suffirait d'écrire simplement en utilisant CompanyTool (ce que je comprends signifie que vous pouvez utiliser n'importe quelle classe dans cet espace).
J'espère que tout le monde pourra me le dire, merci.

曾经蜡笔没有小新曾经蜡笔没有小新2736 Il y a quelques jours657

répondre à tous(3)je répondrai

  • 巴扎黑

    巴扎黑2017-06-06 09:55:57

    C++ a ce que vous voulezusing namespace xxx.

    Pourquoi PHP n'introduit pas directement l'intégralité de l'espace de noms ? Seules les personnes impliquées dans la conception le savent probablement.

    Je suppose que la raison est d'éviter d'introduire trop de choses inutiles à la fois. L'introduction par lots n'est pas recommandée dans plusieurs langues.

    répondre
    0
  • ringa_lee

    ringa_lee2017-06-06 09:55:57

    1. Une précision en classe peut améliorer les performances. S'il ne correspond qu'à un certain répertoire, chaque fois qu'une classe est chargée, le compilateur doit toujours accéder au répertoire pour savoir si la classe existe.

    2. Précis pour la classe pour éviter les conflits. Si le même nom de classe existe dans deux répertoires, s'il est précis pour la classe, les conflits peuvent très bien être évités.

    3. Facile à optimiser, C# a les caractéristiques mentionnées par l'affiche, mais C# est directement compilé dans un fichier exécutable, mais Java adopte une approche précise par classe, les deux sont des langages interprétés, et l'avantage en est bénéfique pour l'étape ultérieure L'optimisation de l'interprétation permet de trouver les classes avec précision et réduit la consommation du cache.

    répondre
    0
  • PHPz

    PHPz2017-06-06 09:55:57

    Vous pouvez utiliser une classe ou un espace de noms

    namespace A;
    class B
    {
        public function test() {}
    }

    Citation

    namespace C;
    use A;
    $b = new A\B();
    $b->test();

    ou

    namespace C;
    use A\B;
    $b = new B();
    $b->test();

    Si tu écris comme ça, ça laissera certainement autoload找不到这个文件。如果是手动载入文件的,从命名空间的理解出发也必须要那样写。而且我觉得提问的那个排版应该是namespace CompanyTool;

    répondre
    0
  • Annulerrépondre