Estava criando uma classe em um servidor de um cliente.
Como sempre, utilizo métodos ou atributos de uma mesma classe chamando por $this. E tive o mesmo problema que o Tiago Floriano.
Eu estava desatualizado na linguagem e tive um problema de sintaxes.
Mesmo sendo tudo php, o php5 melhorou sua performance e desempenho, principalmente com questões de OOP. Com isso, algumas sintaxes foram re-estruturadas.
Por isso, o meu código estava aparecendo o seguinte erro: Fatal error: Using $this when not in object context in
Depois de muito pesquisar no pai dos burros, encontrei a solução. Descobri que trocando o $this->nomeDoMetodo() por self::nomeDoMetodo() funcionaria no php5.
Mas para mim, não basta ter apenas a solução. Portanto pesquisei mais sobre php5 e sua “nova” estrutura de Classes. Que é Composta por Encapsulamento(Public, Protected e Private), Constantes de Classe, Interfaces e Propriedades Estáticas(que é o caso do $this), o Design Pattern Singleton que é muito interessante e outros conceitos que pretendo abordar logo mais.
Se você é tão curioso quanto eu, ou apenas gosta de atualizar-se, leia este material completo em PDF que absorve bastante sobre OOP(Programação Orientada a Objetos) em PHP5.
@Tiago, atualização é o mínimo. Até escrevi um post sobre estudar mais do que médico rsrs
abs
@Marcelo, valeu pela explicação. Estudando mais um pouco, descobri que eu não poderia usar o meu método estático. Eu precisaria estanciá-lo para conseguir o que eu queria.
Valeu, abs!
Léo, é simples. $this é uma variável interna no escopo do OBJETO, ou seja, você precisa criar um objeto a partir de uma classe. Já self, assim como parent, funciona no contexto da classe (ou classes, dependendo se ela é herdadada de outra classe), estaticamente.
Olá Leo,
primeiramente, obrigado pelo link! Depois, realmente, para nós que trabalhamos com internet, se não nos mantermos atualizados, a coisa pode ficar preta! Muitas vezes perdemos mais tempo tentando corrigir um problema destes do que estudando para que isto não ocorra!