PHP的use语句在加载类时是否会引起额外的工作?
作者:互联网
代码样本1
use Outline\Drawing;
$var = new Drawing();
代码样本2
$var = new Outline\Drawing();
题:
如果我在示例1中使用代码,PHP是否会使硬件工作更困难(查找更多文件或进行更多处理)?我敢肯定,即使是在某些代码的级别上,也能确定出哪些使用行与哪个类相匹配.我想确切地了解正在发生的事情.
简而言之:
>在弄清楚use语句的使用和它应该用于的类之间的联系时,PHP会做什么?
>当涉及这两个代码样本时,PSR-0 / PSR-4自动加载器的工作方式是否受到影响?
解决方法:
What does PHP do when working out the connection between the use of the use statement and a class it is supposed to be for?
use语句实际上并未将名称空间/类加载到文件中.它只是设置别名列表以引用该命名空间中的类.
当遇到尚未声明的类时,它将使用该别名列表尝试完全限定类名(替换前缀).如果找不到该类的别名,它将使用当前作用域的名称空间来限定该类的名称.
仅当类名完全合格时,该php才会尝试自动加载该类(调用可能已定义的各种自动加载器).
Are PSR-0/PSR-4 autoloaders affected in the way they work when it comes to these two code samples?
不,自动加载器不会受到代码示例差异的影响,因为php会使用完全相同的参数以完全相同的方式调用自动加载器.
标签:autoload,psr-4,psr-0,php 来源: https://codeday.me/bug/20191029/1962392.html