Obtendo erro fatal: usando $ this quando não estiver no contexto do objeto no stemmer.php na linha 317 [duplicado

StackOverflow https://stackoverflow.com/questions/3628278

Pergunta

Esta pergunta já tem uma resposta aqui:

Estou recebendo um erro fatal: usando $ isso quando não estiver no contexto do objeto no Stemmer.php na linha 317.

No momento, estou usando a classe STEMMER que encontrei na Internet para alterar palavras para a versão Stemed antes de pesquisar no banco de dados por correspondências.

Eu li todas as postagens relacionadas, onde as pessoas estão tendo um problema semelhante. A diferença é que o código que causa o erro definitivamente está dentro do contexto do objeto (o código abaixo mostrará isso). A outra coisa estranha é que existem partes do código muito semelhantes ao erro antes e depois que ele não parece causar dificuldades. Em momentos diferentes, a linha de erro mudou para algumas dessas outras linhas.

Alguém tem alguma idéia do que poderia estar causando o problema. Estou usando o Php5.1.34 se isso faz alguma diferença.

Código que chama a classe 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;
    }
}

Classe Stemmer:

class Stemmer
{

...

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

...

}

Mesmo quando o erro ocorre em locais de diferença no código, sempre parece ser quando há código tentando chamar outro método dentro da mesma classe. Isso poderia ser um bug no PHP5 que eu não conheço? Qualquer conselho seria bastante apreciado.

Obrigado Archie

Foi útil?

Solução

Você está usando $ th This em um método estático.

Métodos estáticos não têm uma instância; Você deve acessar outras propriedades/métodos estáticos ou criar uma instância no método estático para trabalhar.

Por exemplo

Stemmer::_step_1($word);

onde declarado em sala de aula como

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

Outras dicas

Este erro ocorreu, porque stem não é uma classe estática, ele usa $ this. Tente usar este código:

$Stemmer = new Stemmer;
$Stemmer->stem($word);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top