операторы "use" в файле php - PullRequest
       44

операторы "use" в файле php

0 голосов
/ 07 сентября 2018

Я новичок в Laravel и, узнав об операторах «пространство имен» и «использование», я обнаружил, что, например, в контроллерах, когда мы впервые пишем операторы «использования», это должно повторяться внутри функции.

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

class Controller extends BaseController
{

    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

Почему это так работает? Почему не достаточно написать операторы «use» один раз, не повторяя их в функции? А также, если я создам другой Контроллер с тем же пространством имен, должен ли я также написать те же операторы «использования»?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

В PHP есть два разных use:

  1. К псевдоним имен пространственных имен,
  2. для применения черт к классам.

В use вверху файла псевдонимы имен пространственных имен превращаются в более короткие локальные. Буквально они используются только для того, чтобы вы могли написать DispatchesJobs внутри этого одного файла вместо того, чтобы всегда использовать полное имя \Illuminate\Foundation\Bus\DispatchesJobs.

use внутри class применяет эту черту к классу.

В этом случае вы могли бы опустить первый use для псевдонима черты и применить его, используя его полное имя:

namespace App\Http\Controllers;

class Controller extends \Illuminate\Routing\Controller {
    use \Illuminate\Foundation\Bus\DispatchesJobs;
    ...
}

Это в точности то же самое, но, очевидно, довольно многословно. Создание нескольких псевдонимов в верхней части файла позволяет вашему следующему коду быть более кратким.

0 голосов
/ 07 сентября 2018

Использование ключевого слова use вне класса просто импортирует определенную часть с именем trait.

И использование ключевого слова use внутри класса фактически наследует или реализует, чтобы использовать это trait

...