Palavra-chave $this em PHP: o que é e como a usar

Uma explicação simples da palavra-chave $this em PHP: para que serve, como aceder às propriedades e aos métodos da classe atual, e os erros que se pagam caro.

Palavra-chave $this em PHP: o que é e como a usar

Introdução

$this é uma das coisas mais importantes e mais úteis da programação orientada a objetos em PHP. E, infelizmente, é também uma das mais negligenciadas. Muita gente já ouviu falar desta palavra-chave, mas não sabe como a usar.

Neste artigo vou explicar-te em poucas linhas o que é o $this e como funciona. Se não tens qualquer conhecimento de POO, vale a pena ires ver primeiro do que se trata, para acompanhares melhor o que se segue.

O que é o $this e como funciona?

A palavra-chave $this dá-nos acesso aos métodos e às propriedades da nossa classe. Ou seja, permite-nos chamar um método ou uma propriedade dentro da própria classe atual.

A título de exemplo, vamos começar por criar uma classe simples chamada Dog. É esta a classe que vamos usar nos exemplos seguintes.

php
class Dog {

    public $name;
    public $age;
}

Para obter a propriedade da nossa classe, usamos o $this como se vê a seguir:

php
$this->name

O exemplo acima mostra apenas como usar a palavra-chave corretamente. Repara que temos de retirar o $ ao nome da propriedade: $name passa a name depois da seta. Convém não esquecer este pormenor, senão arriscas-te a não perceber porque é que o teu código não corre como devia.

A palavra-chave $this e os métodos

Vamos agora usar o $this dentro de um método da nossa classe:

php
class Dog {

    public $name;
    public $age;

    public function intro(){

        echo 'Voici ' .$this -> name . ' et il a ' .$this -> age . 'ans.';

    }
}

Para a nossa função correr, temos de criar um objeto da classe, definir os valores das propriedades e só depois chamar o método público:

php
<?php
// Instanciar
$blacky = new Dog();

// Acrescentar a propriedade name
$blacky->name = 'Toffee';

// Acrescentar a propriedade age
$blacky->age = '2 months';

E, por fim, chamamos a nossa função.

php
echo $blacky->intro();

O que acabámos de fazer foi levar as propriedades da classe para dentro da nossa função. O resultado será algo assim:

C’est Toffee et il a 2 mois.

Também podemos chamar um método dentro de outro método da nossa classe com a palavra-chave $this, o mesmo $this que já usámos para as propriedades. Aqui fica um exemplo rápido, com uma classe nova.

php
class Man{
    public $name;

    public function say(){
         echo 'Bonjour ' . $this->name;     
    }

    public function hello(){
        $this->say;
    }
}

Vamos então criar o nosso objeto, definir os valores e chamar a função.

php
// Instanciar o objeto
$john = new Man();

// Acrescentar o nome
$john->name ='john';

// Chamar o método hello()
echo $john->hello();

O resultado deverá ser

Bonjour John

É assim que se usa o $this dentro de um método para chamar outro método da mesma classe.

Conclusão

Como vês, é bastante prático. Claro que é preciso algum tempo até ganhares o hábito de o usar no teu código, mas assim que lhe apanhares o jeito vais usá-lo 24 horas por dia, 7 dias por semana.

PHP

Damien Flandrin Programador web desde 2010, criador da Gekkode e do Email Impact. Cada artigo é testado num projeto real antes de ser publicado. Contacto
Newsletter

Os novos testes, tutoriais e projetos, por e-mail.

Testes reproduzíveis, código versionado, resultados datados. Nunca spam.