Trocando o $this do php4 por self no php5

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.

3 ideias sobre “Trocando o $this do php4 por self no php5

  1. @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!

  2. 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. 🙂

  3. 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!

Deixe uma resposta