2017-02-18 3 views
1

"AS" Stichwort in Laravel RahmenDer Versuch, unter den "AS" Schlüsselwort in Laravel

Ich versuche zu verstehen, dieses Schlüsselwort "als" in den Code zu verstehen.

Warum Illuminate \ Contracts \ Auth \ Access \ Gate als GateContract?

Nicht

Verwendung Illuminate \ Verträge \ Auth \ Access \ Tor \ GateContract.

+0

Mein Mangel an Laravel-Wissen hindert mich daran, eine vollständige Antwort zu geben, aber ich würde vermuten, dass es eine Schnittstelle oder abstrakte Klasse ist. – Jeff

Antwort

3

Dass es ein Vertrag ist bereits im Namensraum, so dachten die Autoren, dass es redundante Informationen war. Und normalerweise würden Sie nur use Illuminate\Contracts\Auth\Access\Gate; und das ist es.

Da jedoch diese Klasse auch genannt Gate, müssen Sie die importierte Klasse etwas anderes nennen - sonst wird PHP weiß nicht, auf welche Gate Sie beziehen sich, wenn Sie es in Ihrem Code aufrufen. Die as Alias ​​für einen anderen Namen für diesen speziellen Fall.

Ob das Benennen von Klassen wie diesem eine gute oder schlechte Übung ist, ist ein Thema für sich, nicht wirklich geeignet für StackOverflow, und für das sich viele Menschen überraschend stark interessieren. :)

2

as Schlüsselwort in use wird verwendet, um Alias ​​des ursprünglichen Klassennamens festzulegen.

Zum Beispiel:

namespace App\Controller; 

use App\Model\Book as BookModel; 

class Book 
{ 
    public function add() 
    { 
     $book = new BookModel(); 
    } 
} 

Ihre Controller-Klasse ist Book, und Ihr Modell ist Book. $book = new Book(); erstellt Objekt, die Instanz Ihrer Book Controller, nicht Ihre Book Modell. Wenn Sie ein Objekt Ihres Modells Book erstellen möchten, müssen Sie Ihrem Modell Book einen Alias ​​zuweisen, z. B. BookModel. Anschließend können Sie das Objekt Ihres Modells Book mit new BookModel() erstellen.

+0

Das macht wirklich Sinn, ich habe viel zu lernen, danke Jungs. – Madeny

Verwandte Themen