开发者

getting Fatal error: Using $this when not in object context in Stemmer.php on line 317 [duplicate]

This question already has answers here: PHP Fatal error: Using $this when not in object context (9 answers) Closed 9 years ago.

I am getting a Fatal error: Using $this when not in object context in Stemmer.php on line 317.

At the moment I am using the Stemmer class which I found on the internet to change words to their stemmed version before searching the database for matches.

开发者_运维知识库I have read all the related posts where people are having a similar problem. The difference is that the code causing the error definitely is within object context (the code below will show that). The other strange thing is that there are parts of the code very similar to the error before and after it which don't seem to cause any difficulties. At different times the error line has changed to some of these other lines.

Does anyone have any ideas what could be causing the problem. I am using php5.1.34 if this makes any difference.

Code which calls the Stemmer class

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:

class Stemmer
{

...

    if ( strlen($word) > 2 ) {
        **$word = $this->_step_1($word);**
    }

...

}

Even when the error occurs in difference places within the code it always seems to be when there is code trying to call another method within the same class. Could this be a bug in php5 that I am not aware of? Any advice would be most appreciated.

Thanks Archie


Your using $this in a static method.

Static methods don't have an instance; you have to access other static properties/methods or create an instance within the static method to work with.

E.g.

Stemmer::_step_1($word);

where declared in class as

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


This error ocurred, because stem is not a static class, he uses $this. Try to use this code:

$Stemmer = new Stemmer;
$Stemmer->stem($word);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜