Черта PHPUnit не найдена после обновления composer.json - PullRequest
0 голосов
/ 25 октября 2018

Оригинал composer.json

"autoload": {
    "psr-4": { "": "src/" },
    "classmap": [ "app/AppKernel.php", "app/AppCache.php" ],
    "exclude-from-classmap": [ "/tests/" ]
},
"autoload-dev": {
    "psr-4": { "tests\\": "tests/" }
}

Новый composer.json

"autoload": {
    "psr-4": {
        "AppBundle\\": "src/AppBundle",
        "TOTO\\": "src/TOTO"
    },
    "classmap": [
        "app/AppKernel.php",
        "app/AppCache.php" ],
    "exclude-from-classmap": [ "/tests/" ]
},
"autoload-dev": {
    "psr-4": {
        "Tests\\": "tests/"
    },
    "files": [
        "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
    ]
},

Моя черта определена в tests\TOTO\Services\InvokeMethodTrait и вызывается другими тестами, такими как tests\TOTO\Services\ConversationServiceTest, посколькуэто изменение для оптимизации автозагрузчика я получаю Fatal error: Trait 'tests\TOTO\Services\InvokeMethodTrait' not found in /var/www/symfony/tests/TOTO/Services/ConversationServiceTest.php on line 17.Раньше он работал правильно, и я ничего не менял в связанных классах.

Есть идеи?

1 Ответ

0 голосов
/ 25 октября 2018

Исходная часть composer.json имела:

"psr-4": { "tests\\": "tests/" }

, а новая:

"psr-4": {
    "Tests\\": "tests/"
}

В случае пространства имен tests может наблюдаться изменение.Это не проблема для PHP (изначально), поскольку пространства имен и классы нечувствительны к регистру (отличный ответ с кратким изложением чувствительности к регистру в PHP https://stackoverflow.com/a/33273959/5264262). Но автозагрузчик композитора получает это неизвестное имя класса в виде строки и разрешает весь этот полностью определенный классприсваивает имена некоторым путям к require файлу, поэтому процесс чувствителен к регистру. На открывшемся вопросе https://github.com/composer/composer/issues/2767 обсуждалась тема, касающаяся темы.

Последний пункт: наши пространства именИмена классов в composer.json должны соответствовать регистру.

...