繁体   English   中英

php文件中的“使用”语句

[英]“use” statements in php file

我是Laravel的初学者,在学习“名称空间”和“ use”语句时,我发现例如在Controllers中,当我们首次编写“ 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”语句而不在函数中重复就不够了? 而且,如果我要创建另一个具有相同名称空间的Controller,是否也应该在其中编写相同的“ use”语句?

PHP有两种不同的use

  1. 要为命名空间名称添加别名
  2. 特质应用于班级。

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

class内部use特质将其应用于班级。

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

namespace App\Http\Controllers;

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

这确实做同样的事情,但是显然很冗长。 在文件顶部建立一些别名可以使您的以下代码更简洁。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM