我使用PSR2标准遇到了PHPCS的问题。已经搜索过高低,但令我惊讶的是我发现没有人报告同样的问题。
说我有一个类声明如下:
<?php
class MyChildClass extends \SomeNameSpace\MyParentClass
{
}
然后我通过PHPCS运行它:
bash-3.2$ phpcs -s --standard=PSR2 test.php
FILE: test.php
--------------------------------------------------------------------------------
FOUND 2 ERROR(S) AFFECTING 1 LINE(S)
--------------------------------------------------------------------------------
3 | ERROR | Expected 0 spaces between "SomeNameSpace" and comma; $1 found
| | (PSR2.Classes.ClassDeclaration.SpaceBeforeComma)
3 | ERROR | Expected 1 space before "MyParentClass"; 13 found
| | (PSR2.Classes.ClassDeclaration.SpaceBeforeName)
--------------------------------------------------------------------------------
Time: 0 seconds, Memory: 4.00Mb
此外:
Bash-3.2$ phpcs --version
PHP_CodeSniffer version 1.3.6 (stable) by Squiz Pty Ltd. (http://www.squiz.net)
有没有人碰到过这个?难道我做错了什么?否则我会首先进入嗅探器代码 - 这感觉不对。
答案 0 :(得分:8)
当前版本的PHP_CodeSniffer中的PSR-1和PSR-2标准尚未完成。我没有在发行说明中提到它们,所以人们显然要么刚刚找到它们,要么就是在谈论当前的开发版本,它们是完整的。
如果你想在PHP_CodeSniffer中试用完整版的PSR-2,你需要克隆git repo并直接使用它:
git clone git://github.com/squizlabs/PHP_CodeSniffer.git
cd PHP_CodeSniffer
php scripts/phpcs --standard=PSR2 /path/to/code
或者你可以等待官方发布,我假设下周某个时候,假设没有报道重大问题。
如果您在提供的代码上运行最新的开发版本,您将得到:
2:PHP_CodeSniffer gsherwood$ php scripts/phpcs --standard=psr2 temp.php
FILE: /Users/gsherwood/Sites/Projects/PHP_CodeSniffer/temp.php
--------------------------------------------------------------------------------
FOUND 2 ERROR(S) AFFECTING 2 LINE(S)
--------------------------------------------------------------------------------
3 | ERROR | Each class must be in a namespace of at least one level (a
| | top-level vendor name)
5 | ERROR | Expected 1 blank line at end of file; 0 found
--------------------------------------------------------------------------------
Time: 0 seconds, Memory: 4.25Mb
希望有所帮助。