php 文件中的 "use" 个语句

"use" statements in php file

我是 Laravel 的初学者,在学习 "namespace" 和 "use" 语句时,我发现,例如,在控制器中,当我们第一次编写 "use" 语句应该在函数内部重复。

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

class Controller extends BaseController
{

    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

为什么会这样?为什么只写一次 "use" 语句而不在函数中重复是不够的?而且,如果我将创建另一个具有相同命名空间的控制器,我是否也应该在那里编写相同的 "use" 语句?

在 class 之外使用关键字 use 只是导入名为 trait 的特定部分。

并且在 class 中使用关键字 use 实际上是继承或实现使用 trait

PHP中有两个不同的use:

  1. alias 个命名空间名称,
  2. traits 应用于 classes。

文件顶部的 use 将命名空间名称别名为较短的本地名称。从字面上看,它们的唯一用途是让您可以在这个文件中写入 DispatchesJobs 而不必始终使用完全限定名称 \Illuminate\Foundation\Bus\DispatchesJobs.

use inside a classtrait 应用于 class.

在这种情况下,您可以省略第一个 use 来为特征添加别名,并使用其完全限定名称应用它:

namespace App\Http\Controllers;

class Controller extends \Illuminate\Routing\Controller {
    use \Illuminate\Foundation\Bus\DispatchesJobs;
    ...
}

这完全相同,但显然相当冗长。在文件顶部建立一些别名可以让您的后续代码更简洁。