发生致命错误:在第317行的stemmer.php中不在对象上下文中时使用$此[重复
-
26-09-2019 - |
题
这个问题在这里已经有一个答案:
我遇到了致命错误:在第317行中的stemmer.php中不在对象上下文中时使用$。
目前,我使用的是在Internet上找到的Stemmer类,然后在搜索数据库以寻找匹配项之前将单词更改为其STEM版本。
我已经阅读了所有人遇到类似问题的相关帖子。不同之处在于,导致错误的代码肯定在对象上下文中(下面的代码将显示)。另一个奇怪的是,代码的一部分与该代码前后的错误非常相似,似乎并没有造成任何困难。在不同的时间,误差线已更改为其他一些行。
有人有任何想法可能导致问题吗?如果有任何区别,我正在使用Php5.1.34。
调用stemmer类的代码
if (isset($search) && $search != "") {
$filtered_words = WordFilter::filter($search);
foreach($filtered_words as $word) {
if(strlen($word) <= 2) {
continue;
}
$w = Stemmer::stem($word);
$stemmed_words[] = $w;
}
}
Stemmer类:
class Stemmer
{
...
if ( strlen($word) > 2 ) {
**$word = $this->_step_1($word);**
}
...
}
即使在代码中的差分位置发生错误时,似乎总是是当有代码试图调用同一类中的另一个方法时。这可能是我不知道的PHP5中的错误吗?任何建议将不胜感激。
谢谢阿奇
解决方案
您以静态方法使用$。
静态方法没有实例;您必须访问其他静态属性/方法或在静态方法中创建实例。
例如
Stemmer::_step_1($word);
在课堂上宣布为
public static function _step_1($var) { [...] }
其他提示
此错误是因为 stem
不是静态课,他使用$。尝试使用此代码:
$Stemmer = new Stemmer;
$Stemmer->stem($word);
不隶属于 StackOverflow