在 php 文件中"use"语句



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

namespace AppHttpControllers;
use IlluminateFoundationBusDispatchesJobs;
use IlluminateRoutingController as BaseController;
use IlluminateFoundationValidationValidatesRequests;
use IlluminateFoundationAuthAccessAuthorizesRequests;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

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

PHP 中有两种不同的use

  1. 要为命名空间名称添加别名
  2. 特征应用于类。

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

class内部use将该特征应用于类。

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

namespace AppHttpControllers;
class Controller extends IlluminateRoutingController {
use IlluminateFoundationBusDispatchesJobs;
...
}

这做同样的事情,但显然相当冗长。在文件顶部建立几个别名可以使以下代码更简短。

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

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

最新更新