2017-02-18 48 views
1

的「AS」關鍵字「AS」在Laravel框架關鍵字試圖瞭解在laravel

我試圖理解這個關鍵字「爲」在下面的代碼。

爲什麼使用Illuminate \ Contracts \ Auth \ Access \ Gate作爲GateContract?

使用照亮\ \合同驗證\訪問\門\ GateContract。

 

    use Illuminate\Contracts\Auth\Access\Gate as GateContract; 

    class Gate implements GateContract 
    { 
     use HandlesAuthorization; 

+0

我缺乏laravel知識阻止我做出完整的答案,但我猜測它是一個接口或抽象類。 – Jeff

回答

3

這是一個契約已經在命名空間中,所以作者認爲這是冗餘信息。通常,你只需要use Illuminate\Contracts\Auth\Access\Gate;就是這樣。

然而,由於這個類是命名爲Gate,你需要調用其他進口類的東西 - 否則,PHP不知道你提到Gate當你在你的代碼中調用它。 as將其命名爲此特定情況的另一個名稱。

這樣的命名類是好還是壞的練習本身就是一個主題,並不真正適用於StackOverflow,而且很多人都感到驚訝地強烈。 :)

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,然後您可以使用new BookModel()創建Book模型的對象。

+0

這真的有道理,我有很多東西要謝謝傢伙。 – Madeny