Я работаю над новым классом токенизатора для PHP_CodeSniffer.Это также требует создания нового Стандарта, поскольку в каждом стандарте указаны допустимые токенизаторы.
Мои новые классы используют те же пространства имен, что и «родственные» классы из исходной кодовой базы.
Если яиспользуйте composer, чтобы установить мой проект, и запустите phpcs
, автозагрузчик, похоже, отлично подхватывает мои новые классы.PHP_CodeSniffer загрузит мой токенайзер, вызвав:
$className = ‘PHP_CodeSniffer\\Tokenizers\\’ . $type;
$class = new $className(<stuff>);
Точно так же мой пользовательский стандарт имеет оператор использования для класса в исходной кодовой базе.При запуске phpcs
ошибки не выдаются.
Когда я пытаюсь запустить тестовый файл через phpcs в модульном тесте, я получаю сообщение об ошибке, что мой пользовательский снифф-файл не может найти класс в использованиизаявление.Я думаю, это связано с автоматической загрузкой.Файл bootstrap.php для phpunit требует __DIR__ . ‘/../vendor/autoload.php’
. Мой проект composer.json имеет:
“autoload”: {
“psr-4”: { “PHP_CodeSniffer\\”: “src\” }
},
“autoload-dev”: {
“psr-4”: { “PHP_CodeSniffer\\Tests\\”: “tests\” }
}
Есть ли проблема с использованием того же пространства имен, что и в исходном коде?С регистрацией того же пространства имен в другом месте в композиторе?Почему это работает во время выполнения, но не в тестировании?