【问题标题】:Trying to understand the "AS" keyword in laravel试图理解 laravel 中的“AS”关键字
【发布时间】:2017-02-18 20:40:28
【问题描述】:

Laravel 框架中的“AS”关键字

我试图在下面的代码中理解这个关键字“as”。

为什么使用 Illuminate\Contracts\Auth\Access\Gate 作为 GateContract?

没有

使用 Illuminate\Contracts\Auth\Access\Gate\GateContract。

使用 Illuminate\Contracts\Auth\Access\Gate 作为 GateContract; 类 Gate 实现 GateContract { 使用 HandlesAuthorization;

【问题讨论】:

  • 我对 laravel 知识的缺乏使我无法做出完整的答案,但我猜它是一个接口或抽象类。

标签: php laravel


【解决方案1】:

它是一个合约已经在命名空间中,所以作者认为这是多余的信息。通常,您只需 use Illuminate\Contracts\Auth\Access\Gate; 即可。

然而,由于这个类也被命名为Gate,所以你需要将导入的类称为别的东西——否则,当你调用它时,PHP 将不知道你指的是哪个Gate在你的代码中。 as 将其别名为此特定案例的另一个名称。

这样命名类的做法是好是坏本身就是一个话题,并不真正适合 StackOverflow,而且很多人对此感到非常强烈。 :)

【讨论】:

    【解决方案2】:

    use中的as关键字用于设置原始类名的别名。

    例如:

    namespace App\Controller;
    
    use App\Model\Book as BookModel;
    
    class Book
    {
        public function add()
        {
            $book = new BookModel();
        }
    }
    

    你的控制器类是Book,你的模型是Book。 $book = new Book(); 将创建您的 Book 控制器实例的对象,而不是您的 Book 模型。如果你想创建Book模型的对象,你必须给你的Book模型一个别名,例如BookModel,然后你可以使用new BookModel()创建你的Book模型的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-11
      • 2020-04-14
      • 1970-01-01
      • 2015-08-31
      • 2021-01-27
      • 1970-01-01
      • 2023-03-10
      • 2012-12-01
      相关资源
      最近更新 更多