Lorsque PHP utilise un espace de noms, pourquoi devrait-il être précis sur une classe sous l'espace de noms ?
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-06 09:53:57
0
3
689

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.

曾经蜡笔没有小新
曾经蜡笔没有小新

répondre à tous(3)
巴扎黑

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.

左手右手慢动作
  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.

PHPzhong

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;

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal