“AS”关键字
我正在尝试在下面的代码中理解这个关键字“as”。
为什么使用Illuminate \ Contracts \ Auth \ Access \ Gate作为GateContract?
不
使用Illuminate \ Contracts \ Auth \ Access \ Gate \ GateContract。
use Illuminate\Contracts\Auth\Access\Gate as GateContract; class Gate implements GateContract { use HandlesAuthorization;
答案 0 :(得分:3)
它的合同已经在命名空间中,因此作者认为它是冗余信息。通常,你只是use Illuminate\Contracts\Auth\Access\Gate;
那就是那个。
但是,由于此类也名为Gate
,因此您需要将导入的类调用为其他类 - 否则,PHP不知道哪个Gate
你在代码中调用时引用。对于此特定情况,as
将其别名为另一个名称。
这样的命名类是一个好的还是坏的实践本身就是一个主题,不太适合StackOverflow,而且很多人都对此感到惊讶。 :)
答案 1 :(得分:2)
as
中的 use
关键字用于设置原始类名的别名。
例如:
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
,然后您可以创建Book
模型的对象使用new BookModel()
。