php文件中的“使用”语句

时间:2018-09-07 13:32:23

标签: php laravel namespaces traits

我是Laravel的初学者,在学习“命名空间”和“ use”语句时,我发现例如在Controllers中,当我们首次编写“ use”语句时,应在函数内部重复它。 / p>

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”语句而不在函数中重复就不够了?而且,如果我要创建另一个具有相同名称空间的Controller,是否也应该在其中编写相同的“ use”语句?

2 个答案:

答案 0 :(得分:6)

PHP中有两种不同的use

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

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

use中的

class特征应用于类。

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

namespace App\Http\Controllers;

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

这完全相同,但是显然很冗长。在文件顶部建立一些别名可以使下面的代码更简洁。

答案 1 :(得分:1)

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

在类中使用关键字use实际上是继承或实现了使用该trait