我正在为php_codesniffer的新令牌类工作。这也需要制定新标准,因为在每个标准中指定了有效的令牌。
。我的新类使用与原始代码库中的"同级"类相同的名称空间。
如果我使用Composer安装项目并运行phpcs
,则自动加载程序似乎可以选择我的新课程。php_codesniffer将通过致电:
$className = ‘PHP_CodeSniffer\Tokenizers\’ . $type;
$class = new $className(<stuff>);
同样,我的自定义标准具有原始代码库中类的使用语句。运行phpcs
时,没有丢弃错误。
当我尝试通过单元测试中的PHPC运行测试文件时,我会发现我的自定义嗅探文件无法在使用语句中找到类。我的猜测是这与自动加载有关。phpunit的bootstrap.php文件需要 __DIR__ . ‘/../vendor/autoload.php’
.my project composer.json具有:
“autoload”: {
“psr-4”: { “PHP_CodeSniffer\”: “src” }
},
“autoload-dev”: {
“psr-4”: { “PHP_CodeSniffer\Tests\”: “tests” }
}
使用与原始代码相同的命名空间有问题吗?将相同的名称空间注册到作曲家中的其他位置?它为什么在运行时起作用,但在测试中不起作用?
事实证明,phpunit有自己的自定义引导加载程序。当我在Phpunit引导程序中为此添加require_once()
时,它已成功加载。感谢php subreddit上的用户。