我从未在任何地方见过这个结构,所以我想知道这样的表达式是否有问题:
if (condition) {
use Symfony\Component\HttpFoundation\Response;
}
答案 0 :(得分:7)
这会抛出语法错误。来自TFM:
必须在文件的最外层范围内声明
use
关键字 (全局范围)或内部命名空间声明。这是因为 导入是在编译时完成的,而不是运行时,因此不能 块范围。
答案 1 :(得分:7)
use
唯一能做的就是 alias 一个类名。就是这样。没什么。
而不必在脚本中重复编写完全限定的类名:
$q = new \Foo\Bar\Baz\Quux;
if ($q instanceof \Foo\Bar\Baz\Quux) ...
您可以将其缩短为:
use Foo\Bar\Baz\Quux;
$q = new Quux;
if ($q instanceof Quux) ...
因此,有条件地使用use
毫无意义。它只是一个语法助手;如果可以有条件地使用你的脚本语法会变得模棱两可,这是没人想要的。
它不会减少代码加载,因为代码只能通过require
/ include
调用或自动加载显式加载。后者是非常优选的,因为它只在需要时才会懒散地起作用。