suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wenn PHP einen Namespace verwendet, warum sollte es sich dann genau auf eine Klasse unter dem Namespace beziehen?

Der Code unter der Datei Tool.class.php lautet:

Namespace CompanyTool;

Klasse Werkzeug{

}

Meine Frage ist, warum Sie, wenn Sie die Tool-Klasse in anderen Dateien verwenden, so schreiben müssen: use CompanyToolTool

Ich dachte, es würde ausreichen, einfach CompanyTool zu verwenden (was meines Wissens bedeutet, dass Sie jede Klasse in diesem Bereich verwenden können).
Ich hoffe, jeder kann es mir sagen, danke.

曾经蜡笔没有小新曾经蜡笔没有小新2736 Tage vor655

Antworte allen(3)Ich werde antworten

  • 巴扎黑

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

    C++就有你想要的using namespace xxx

    为啥PHP不直接引入整个命名空间,这大概参与设计的人才知道了。

    我猜原因是避免一次引入过多不需要的东西,批量引入在各种语言中都是不推荐的。

    Antwort
    0
  • ringa_lee

    ringa_lee2017-06-06 09:55:57

    1. 精确到类可以提高性能。若只是精确到某个目录,每次加载类的时候,编译器仍然需要去目录中寻找该类是否存在。

    2. 精确到类可以避免冲突,若2个目录存在相同的类名,若精确到类,则很好的对冲突进行避免。

    3. 易于优化,C#拥有楼主所说的特性,但是C#是直接编译成可执行文件,但是java则采取的是精确到类的做法,同为解释型语言,这样做的好处是有利于后期的解释优化,让类能精准的被找到,减少缓存的消耗。

    Antwort
    0
  • PHPz

    PHPz2017-06-06 09:55:57

    可以 use 一个类,也可以 use 一个命名空间

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

    引用

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

    或者

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

    要是你那样写,势必会让autoload找不到这个文件。如果是手动载入文件的,从命名空间的理解出发也必须要那样写。而且我觉得提问的那个排版应该是namespace Company\Tool;

    Antwort
    0
  • StornierenAntwort