编程语言
首页 > 编程语言> > PHP的use语句在加载类时是否会引起额外的工作?

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