我完全不知道出了什么问题。我有一个成功运行的代码版本,并且在添加了一些微小的更改之后;在我的endforeach和endif语句的末尾(为了使它与php 5.2兼容),我收到了大量的错误。但它们都是同样的错误:
09-Jul-2015 07:47:26 US/Pacific] PHP Notice: Undefined index: in /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer/File.php on line 3476
[09-Jul-2015 07:47:26 US/Pacific] PHP Stack trace:
[09-Jul-2015 07:47:26 US/Pacific] PHP 1. {main}() /Applications/MAMP/bin/php/php5.6.2/bin/phpcs:0
[09-Jul-2015 07:47:26 US/Pacific] PHP 2. PHP_CodeSniffer_CLI->runphpcs() /Applications/MAMP/bin/php/php5.6.2/bin/phpcs:25
[09-Jul-2015 07:47:26 US/Pacific] PHP 3. PHP_CodeSniffer_CLI->process() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer/CLI.php:95
[09-Jul-2015 07:47:26 US/Pacific] PHP 4. PHP_CodeSniffer->processFiles() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer/CLI.php:867
[09-Jul-2015 07:47:26 US/Pacific] PHP 5. PHP_CodeSniffer->processFile() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer.php:619
[09-Jul-2015 07:47:26 US/Pacific] PHP 6. PHP_CodeSniffer->_processFile() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer.php:1679
[09-Jul-2015 07:47:26 US/Pacific] PHP 7. PHP_CodeSniffer_File->start() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer.php:1801
[09-Jul-2015 07:47:26 US/Pacific] PHP 8. Generic_Sniffs_WhiteSpace_ScopeIndentSniff->process() /Applications/MAMP/bin/php/php5.6.2/lib/php/PHP/CodeSniffer/File.php:567
每次运行代码时,它会给我这个错误大约200次。我正在使用安装了phpcs的Sublime Text 3。我试过unistalling phpcs以及从我的php文件夹中删除它,但它似乎根本没有影响它。
任何人都有这方面的经验吗?知道可能导致它的原因吗?
EDITED :
我已经从Sublime Text 3中删除了代码嗅探器包,并删除了错误消息中提到的CodeSniffer文件夹,我仍然得到完全相同的错误消息。
答案 0 :(得分:2)
您明确地遇到了phpCS中的错误,因此可能应该在他们的github问题页面上报告。见https://github.com/squizlabs/PHP_CodeSniffer/issues。您需要提供尽可能小的代码示例,以便可靠地重现该问题。
错误当然只是一个" notice",所以PHP很乐意继续运行phpCS程序。这可能是也可能不是好事。发生此类问题的某些情况可能会导致程序进一步严重问题,而在其他情况下则完全没有任何区别。如果不对phpCS代码库进行深入分析(不幸的是,我没有时间),我很难确定这个特定情况下哪个方面落入了这个特定情况。
然而,简单地查看File.php的代码,似乎错误发生在findFirstOnLine()
函数中,并且可能是由于其中一个参数($start
)被传递为空白,期望收到整数的地方。
如果没有看到自己发生的问题,很难确定这一点,但如果这是问题所在,那么快速修复就是在该函数的开头添加一行代表< / p>
$start = (int)$start;
如果我的粗略分析是正确的,那么应该停止通知。
但是,参数传入时带有意外值的事实可能会指向phpCS中其他地方的更深层次的错误,因此我建议在继续上述操作之前需要进行更多分析。
但最后,我重复了我之前发表的评论。发生这种情况是因为您已经使您的代码与PHP5.2兼容。我真的强烈建议你重新考虑一下你是否真的需要那样做。今天任何人都应该使用PHP5.2没有任何理由:它已经失去了支持,并且近半年没有安全补丁。如果你正在运行它,那么它可能意味着你也运行了一个不受支持的操作系统版本,因为它根本不适用于任何最新的操作系统版本,所以这意味着你有一个整体一堆更多的安全问题。请不要使用它,也请不要鼓励其他人使用它。
答案 1 :(得分:0)
Undefined index:
通常意味着您尝试通过其键(“索引”)访问数组元素,并且数组中的键不存在。
$array = array(
'a' => 'apple',
'c' => 'cat',
);
var_dump($array['c']); //cat
var_dump($array['b']); //null
// and notice: Undefined index: b in ...
你的代码有趣的是它没有告诉你索引是什么。