Mão na Massa: Como Criar Classes, Objetos, Atributos e Métodos em PHP
Nos tutoriais anteriores, você aprendeu o que são objetos, herança, polimorfismo e encapsulamento no plano teórico. Neste tutorial, vamos sujar as mãos de graxa (ou de café) e escrever código PHP de verdade.
Você vai aprender a sintaxe exata para criar classes, instanciar objetos e manipular as suas variáveis internas (atributos) e ações (métodos).
Para criar uma classe, usamos a palavra reservada
class. Para gerar um objeto a partir dessa classe, usamos a palavra-chave new (ex: $carro = new Carro();). Para acessar um atributo ou executar um método desse objeto, utilizamos o operador de seta -> (ex: $carro->ligar();).
Como Declarar uma Classe: A palavra class
A declaração de uma classe é o ponto de partida de qualquer sistema moderno, seja o controle de estoque de um e-commerce ou a API de um banco. A sintaxe básica é assustadoramente simples.
<?php
class Carro {
// Aqui dentro nós definiremos os Atributos (variáveis)
// E também os Métodos (funções)
}
?>
Basta usar a palavra-chave class, dar um nome a ela (a convenção manda usar a primeira letra em Maiúscula, o padrão PascalCase) e abrir chaves. Pronto, você tem um molde virgem.
Como Instanciar (Criar) um Objeto: O operador new
Com a "planta baixa" (Classe) criada, podemos começar a construir as casas reais (Objetos). Em PHP, instanciar um objeto significa alocar um espaço real na memória do servidor para ele.
Fazemos isso declarando uma variável e atribuindo a ela o comando new seguido do nome da classe.
<?php
// Instanciando três veículos diferentes na frota
$gol = new Carro();
$celta = new Carro();
$corolla = new Carro();
?>
Agora, $gol, $celta e $corolla são objetos independentes no sistema. Mas eles ainda são "cascas vazias" — não possuem motor, cor ou chassi definidos. Vamos resolver isso dando propriedades a eles.
new, o PHP aloca RAM no servidor. Em sistemas grandes com loops de milhares de requisições, instanciar objetos inutilmente pode causar Memory Leak (estouro de memória). Crie objetos com sabedoria!
Como Criar e Acessar Atributos (Variáveis da Classe)
Atributos são as características do seu objeto. No PHP moderno, nós declaramos essas variáveis usando modificadores de visibilidade, como o public (evite usar o antigo var, que é sintaxe legada do PHP 4).
Vamos adicionar o atributo motor à nossa classe e, depois, acessá-lo usando o operador de seta ( -> ).
<?php
class Carro {
// Declarando o atributo com visibilidade pública
public $motor;
}
// Instanciando um novo veículo
$fit = new Carro();
// Acessando e gravando um valor no atributo (sem usar o $)
$fit->motor = 1.5;
// Lendo o valor armazenado
echo "O motor do meu Honda Fit é: " . $fit->motor;
?>
Observe um detalhe crucial da sintaxe: ao acessar o atributo com a seta ->, você não usa o cifrão ($) no nome do atributo. Escrevemos $fit->motor e NUNCA $fit->$motor.
Como Declarar e Acessar Métodos (Ações do Objeto)
Se atributos são variáveis que guardam estados (como cor ou motor), métodos são funções que executam ações. Declaramos os métodos escrevendo funções regulares, mas dentro da hierarquia da classe.
Vamos criar duas ações para o nosso veículo: ligar() e desligar(), e também vamos brincar um pouco com operadores matemáticos para tornar o código mais interessante, usando o operador de módulo matemático ( % ) para descobrir se a placa gerada para o carro é um número par ou ímpar!
<?php
class Carro {
public $motor;
public $numeroPlaca;
// Método que executa a ação de ligar
public function ligar() {
echo "Girando a chave... motor " . $this->motor . " em funcionamento! Vruum!<br>";
}
// Método que executa a ação de desligar
public function desligar() {
echo "Cortando a ignição... fueeem! O carro parou.<br>";
}
// Método simulando uma regra de negócio (Par ou Ímpar com Módulo)
public function rodizioLiberado() {
// Se o resto da divisão por 2 for zero ($x \bmod 2 = 0), é Par
if ($this->numeroPlaca % 2 == 0) {
echo "A placa termina em número PAR. Liberado para rodar hoje!<br>";
} else {
echo "A placa termina em número ÍMPAR. Você vai levar multa se sair da garagem!<br>";
}
}
}
// 1. Instanciamos o objeto
$fit = new Carro();
// 2. Preenchemos os dados (Atributos)
$fit->motor = 1.5;
$fit->numeroPlaca = 4532; // Placa terminada em número par
// 3. Executamos as ações (Métodos)
$fit->ligar();
$fit->rodizioLiberado();
$fit->desligar();
/*
Saída esperada no navegador:
Girando a chave... motor 1.5 em funcionamento! Vruum!
A placa termina em número PAR. Liberado para rodar hoje!
Cortando a ignição... fueeem! O carro parou.
*/
?>
$this dentro do método ligar? Ela serve para que o método acesse os atributos do próprio objeto de forma dinâmica. É como o objeto dizendo: "Pegue o MEU motor".
⚙️ Script Interativo: Acessando Métodos em Tempo Real
Interaja com o painel abaixo para ver como o JavaScript no Front-end pode simular a chamada dos métodos de ligar e desligar de um carro:
Painel de Controle - Honda Fit 1.5
Domine o Front-end e o Back-end (O Pacote Completo) 💼
Saber criar classes no PHP é essencial, mas você sabe como conectar essas regras de negócio a um formulário HTML e estilizá-lo com CSS? Desenvolvedores Full-Stack ganham o dobro do salário inicial. Domine tudo com o nosso pacote de 7 apostilas premium!
Consolide seu Conhecimento (O que estudar a seguir)
Agora que você já sabe como escrever a sintaxe pura e instanciar seus primeiros objetos usando o new, precisa blindar essa arquitetura para que ela seja útil. Veja o que estudar agora:
- Volte uma casa: Se você não entendeu muito bem as vantagens dessa arquitetura, revise a aula sobre Polimorfismo, Herança e Encapsulamento.
- Material Oficial: Aprofunde seu conhecimento técnico com precisão acessando a documentação oficial de Propriedades do PHP.
- O Próximo Nível: Siga para o próximo tutorial e descubra a magia de preparar o seu objeto no momento exato em que ele nasce, aprendendo sobre o Método Mágico __construct() no PHP.
Perguntas Frequentes (FAQ) da Comunidade
Qual é a diferença entre uma Função procedural e um Método de uma classe?
function(). A grande diferença é o escopo. Uma função procedural "solta" no código pode ser chamada de qualquer lugar. Um método só existe atrelado a um objeto e manipula os dados específicos apenas daquele objeto, protegendo a sua lógica de interferências externas.
Posso colocar o nome do meu atributo com cifrão no operador de seta (ex: $objeto->$atributo)?
->). Se você usar $objeto->$atributo, o PHP não vai buscar a variável 'atributo', ele vai buscar uma propriedade cujo nome seja o valor que está guardado dinamicamente dentro da variável externa `$atributo`. É um erro comum de sintaxe para iniciantes.
Nenhum comentário:
Postar um comentário