Как и где следует использовать ключевое слово «use» в php

Я использовал ключевое слово «use», как правило, выше определения класса. Как это:

<?php namespace suites\plugins\content\agpaypal; use \Codeception\Util\Fixtures; use \Codeception\Verify; use \Codeception\Specify; class agpaypalTest extends \Codeception\Test\Unit { protected $tester; ... 

Но теперь я понял, что я должен поместить строку для определения Specify в определение класса. Как это:

  <?php namespace suites\plugins\content\agpaypal; use \Codeception\Util\Fixtures; use \Codeception\Verify; class agpaypalTest extends \Codeception\Test\Unit { use \Codeception\Specify; protected $tester; ... 

Я думаю, это потому, что пакет \ Codeception \ Specify; это черта. Но я не понимаю, почему я не мог повторно использовать эту черту, когда я устанавливаю использование строки \ Codeception \ Specify; перед определением класса?

Я был бы счастлив, если бы кто-нибудь мог указать мне подсказку или объяснение, объясняющее мне, где я должен использовать ключевое слово «использовать» лучшее.

    В PHP использование ключевого слова используется в трех случаях:

    1. Как псевдоним имени класса – просто объявляет короткое имя для класса (должно быть объявлено вне определения класса) ( руководство: Использование пространств имен: слияние / импорт )
    2. Чтобы добавить признак в класс (должен быть объявлен внутри (вверху) определения класса) ( manual: Traits )
    3. В анонимном определении функции для передачи переменных внутри функции ( руководство: анонимные функции )

    use в основном включает класс в файл для его использования. Есть два способа включить файл класса в другой файл. Самым общим является require или include метода. Другой метод – использование композитора. Предположим, что эта структура каталогов

     Project | |--- Folder A | | | |---UserRegistration.php | |---Example | |--TestUserRegistration.php 

    В папке A есть UserRegistartion.php и вы хотите использовать код в TestUserRegistration.php В UserRegistration.php Это может быть class , trait или Interface

    Метод 1.

    В TestUserRegisteration.php вы можете include или require файл UserRegistartion.php
    и использовать его

    Способ 2

    Использование Composer. В UserRegistration.php вы определяете namespace FolderA; как первая строка кода. Затем напишите свой код так же, как и вы. Итак, теперь вы хотите использовать этот файл в TestUserRegistration.php вы делаете

     include vendor/autoload.php; use FolderA\UserRegistration; 

    Какой из них лучше и почему?

    Метод 2 с использованием композитора – лучший метод. В методе 1, куда вы хотите включить UserRegistration, вы должны найти относительный путь к файлу UserRegistration. Поэтому давайте предположим, что когда-нибудь вам понадобится изменить структуру каталогов, которую ваше приложение будет разорвать, как относительный путь, который вы предоставили, теперь он не существует.

    Но в методе 2 вы всегда используете предоставленное пространство имен \ Имя файла вместо того, где вы хотите использовать. Поэтому даже вы меняете структуру каталогов, вам не нужно получать все коды и изменять путь. Он будет работать так, как есть. Чтобы узнать больше об использовании namespace и composer .

    Вы не можете импортировать класс с ключевым словом use . Вы должны использовать оператор include / require . Даже если вы используете какой-либо автозагрузчик php, автозагрузчик по-прежнему должен использовать либо include либо require внутренне.

    Целевое использование ключевого слова:

    Рассмотрим случай, когда у вас есть два класса с одинаковым именем; вы обнаружите, что это странно, но когда вы работаете с большой структурой MVC, это происходит. Поэтому, если у вас есть два класса с одинаковым именем, поместите их в разные пространства имен. Теперь рассмотрим, когда ваш автозагрузчик загружает оба класса (по require ), и вы собираетесь использовать объект класса. В этом случае компилятор будет путать, какой объект класса загружается между двумя. Чтобы помочь компилятору принять решение, вы можете использовать оператор use чтобы он мог принять решение, на которое он будет использоваться.

    Здесь говорится, как работает ключевое слово «use»