编程语言
首页 > 编程语言> > 得到致命错误:在第317行的Stemmer.php中不在对象上下文中时使用$this [复制]

得到致命错误:在第317行的Stemmer.php中不在对象上下文中时使用$this [复制]

作者:互联网

参见英文答案 > PHP Fatal error: Using $this when not in object context                                    8个
我收到致命错误:在第317行的Stemmer.php中不在对象上下文中时使用$this.

目前我正在使用我在互联网上找到的Stemmer类,在搜索数据库匹配之前将单词更改为其词干版本.

我已经阅读了人们遇到类似问题的所有相关帖子.不同之处在于导致错误的代码肯定在对象上下文中(下面的代码将显示).另一个奇怪的事情是代码的某些部分与它之前和之后的错误非常相似,这似乎不会造成任何困难.在不同的时间,错误行已更改为其他一些行.

有没有人有任何想法可能导致问题.我使用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中的错误吗?任何建议都将非常感激.

谢谢
阿奇

解决方法:

你在静态方法中使用$this.

静态方法没有实例;您必须访问其他静态属性/方法或在静态方法中创建实例才能使用.

例如.

Stemmer::_step_1($word);

在课堂上宣称为

public static function _step_1($var) { [...] }

标签:fatal-error,php,mysql,object,this
来源: https://codeday.me/bug/20190726/1545437.html