
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.
class Dog {
public $name;
public $age;
}
Para obter a propriedade da nossa classe, usamos o $this como se vê a seguir:
$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:
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
// 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.
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.
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.
// 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.


