Я использовал ключевое слово «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 использование ключевого слова используется в трех случаях:
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»