Пространство имен, которое, кажется, не существует, работает, но почему?

#php #phpunit

#php #phpunit

Вопрос:

У меня есть эта папка с упражнениями, в которой я получил инструкции по установке веб-приложения:

Итак, эта папка содержит .sh файл, который устанавливает необходимые вещи:

 npm install
curl -o phpunit -L https://phar.phpunit.de/phpunit-7.phar
chmod  x phpunit
./phpunit --version
  

Таким образом, в основном это добавляет файл, вызываемый phpunit внутри корневой папки. Итак, пока я вроде понимаю, что происходит, поэтому это устанавливает зависимости узлов, а также устанавливает phpunit (я так думаю), но в этом проекте есть модуль тестового примера:

 <?php

declare(strict_types=1);

use PHPUnitFrameworkTestCase;

final class HelloWorldTest extends TestCase
{
  public function testWhenGetDataFromHelloWorld(): void
  {
    $this->assertEquals('Hello World', 'Hello World');
  }
}
  

На данный момент я не понимаю, как это use PHPUnitFrameworkTestCase; работает, поскольку у меня нет папки с именем PHPUnit, я понимаю, что это что use -то вроде импорта класса, но все же, как это работает (когда я запускаю тест, он не выдает мне никаких ошибок)?, также,похоже, что vscode обнаруживает импорт как ошибку, потому что кажется, что его не существует.

Мое дерево файлов выглядит следующим образом:

введите описание изображения здесь

Может кто-нибудь объяснить мне, пожалуйста?

Комментарии:

1. Вероятно, оно было включено композитором в вашу папку поставщиков. Прочитайте о автозагрузке PSR-4 . Если вы не используете composer, вы должны, но это может сработать, потому что ваша IDE включает PHPUnit.

2. @AlexBarker У меня нет папки поставщика.

3. @AlexBarker Зависимости устанавливаются с помощью node (внутри «node_modules»), node запускает php-сервер, и я не использую никакой IDE, я использую только редактор кода.

Ответ №1:

Это потому, что все зависимости находятся в phpunit-7.phar файле, который был назван phpunit этим скриптом.

«Самый простой способ получить PHPUnit — загрузить архив PHP (PHAR), в котором все необходимые (а также некоторые дополнительные) зависимости PHPUnit собраны в одном файле».

PHPUnit — Установка PHPUnit — PHP Archive (PHAR)

Комментарии:

1. Хорошо, я понял, так что это работает при запуске phpunit как php phpunit [options]