gpt4 book ai didi

php - PHP 命名空间的 use 语句是为了性能还是为了方便?

转载 作者:行者123 更新时间:2023-12-04 16:58:23 25 4
gpt4 key购买 nike

在 PHP 中使用命名空间时,您可以选择如何引用它们。你可以把它们放在类(class)的顶端

use Symfony\Component\HttpFoundation\JsonResponse;

或者您可以在调用类时包含它们:
return Symfony\Component\HttpFoundation\JsonResponse::create($data);

我的问题是,是否有任何性能方面的考虑更倾向于一种方法而不是另一种方法?

我可以想象,基于没有任何真正的知识,有可能声明 use在一个类中可能会有某种预加载类定义,这些定义永远不会在实际代码执行中使用,具体取决于数据——这将通过仅在您实际调用时引用命名空间类来解决。或者,如果您在开发期间进行了声明,但从未最终调用该类,但在结束时不考虑将其删除,则您的代码将始终加载该类定义,而从不使用它。

继续在运行时使用我对 PHP 非常零散的知识,在类定义中声明命名空间可能会被编译,使其在实际调用该类时运行得更快,而不必在调用时进行某种“动态”查找类(class)。

或者是 use在类声明的顶部添加命名空间只是为了开发人员的方便,以避免大量重复输入?

我发现了这个问题, Are namespaces bad for performance? ,但它只是询问在代码中的任何地方使用命名空间是否会对性能产生负面影响。也是 7 岁;有可能信息已经过时了。

最佳答案

我会说两者,例如在脚本中:

use my\php\namesapce\TestClass;

echo TestClass::class;
$instance = new TestClass();
  • 性能 因为:
  • PHP 每次只需要读取/评估一个单词(即 TestClass )。
  • PHP 在内部将名称 ( TestClass ) 临时存储为键值对中完整路径的键(只要文件正在被读取)。
  • 该文件占用的空间更少,因此首先加载的时间更少。
  • 更方便因为开发者不需要每次都写完整的路径。

  • 并且不影响 auto-loader的方式有效(参见另一个 related post ),因为:

    PHP will call the autoloaders exactly the same way with exactly the same parameters, with or without the use-statement.

    关于php - PHP 命名空间的 use 语句是为了性能还是为了方便?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58360695/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com