2017-02-18 2 views
1

«AS» ключевое слово в рамках LaravelПытаясь понять «как» ключевое слово в Laravel

Я пытаюсь понять это ключевое слово «как» в коде ниже.

Зачем использовать Illuminate \ Contracts \ Auth \ Access \ Gate как GateContract?

Не

использование Осветите \ Контракты \ Auth \ Access \ Gate \ 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, то вы можете создать объект своей модели Book, используя new BookModel().

+0

Это действительно имеет смысл, я многое узнал, спасибо ребятам. – Madeny

 Смежные вопросы

  • Нет связанных вопросов^_^