BlogBlogs.Com.Br

Desenvolvimento, Tutorial » Trocando o $this do php4 por self no php5

29 de outubro de 2008 por Leo Caseiro

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.


Gostou do Post? Assine o Feed Assine o Feed RSS


Tags: , ,

3 Comentários para “Trocando o $this do php4 por self no php5”

  1. Leo Caseiro disse:

    @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. Marcelo disse:

    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!

Comentar

CommentLuv Enabled