PHP - Propriedades Estáticas
Olá aí, aspirantes a programadores! Hoje vamos mergulhar no mundo emocionante das propriedades estáticas em PHP. Não se preocupe se você é novo em programação - vou guiá-lo por cada passo com a mesma paciência que uso em minha sala de aula há anos. Vamos começar!
O que são Propriedades Estáticas?
Antes de irmos para o código, vamos entender o que são propriedades estáticas. Imagine que você está em uma sala de aula (como a minha!) e lá tem um quadro branco que todos podem ver e escrever. Uma propriedade estática é como esse quadro branco - ela pertence à classe em si, não a nenhum estudante em particular (ou objeto, em termos de programação).
Características Chave das Propriedades Estáticas:
- Elas são compartilhadas entre todas as instâncias de uma classe.
- Elas podem ser acessadas sem criar um objeto da classe.
- Elas são declaradas usando a palavra-chave
static
.
Agora, vamos ver como isso funciona na prática!
Exemplo de Propriedades Estáticas
Vamos criar uma classe simples chamada Counter
para demonstrar propriedades estáticas:
class Counter {
public static $count = 0;
public function increment() {
self::$count++;
}
public static function getCount() {
return self::$count;
}
}
Vamos desmembrar isso:
- Declaramos uma propriedade estática
$count
e inicializamos-a em 0. - O método
increment()
aumenta a contagem em 1. - O método
getCount()
retorna a contagem atual.
Agora, vamos usar essa classe:
echo Counter::$count; // Saída: 0
$counter1 = new Counter();
$counter1->increment();
echo Counter::$count; // Saída: 1
$counter2 = new Counter();
$counter2->increment();
echo Counter::$count; // Saída: 2
echo Counter::getCount(); // Saída: 2
Isso não é incrível? Independentemente de quantos objetos Counter
criamos, todos compartilham o mesmo $count
. É como todos os alunos na minha classe compartilharem um único contador de quadro branco!
A Palavra-chave "self"
Você pode ter notado que usamos self::$count
em nossa classe. A palavra-chave self
é como dizer "esta classe" - ela se refere à classe atual. É particularmente útil com propriedades e métodos estáticos.
Vamos expandir nossa classe Counter
para ver mais usos de self
:
class Counter {
public static $count = 0;
private static $secretCount = 100;
public function increment() {
self::$count++;
self::incrementSecretCount();
}
private static function incrementSecretCount() {
self::$secretCount++;
}
public static function getSecretCount() {
return self::$secretCount;
}
}
Aqui, adicionamos um $secretCount
que é privado (shh, é um segredo!). Usamos self
para acessar tanto propriedades quanto métodos estáticos dentro da classe.
A Palavra-chave "parent"
Agora, vamos falar sobre herança e a palavra-chave parent
. Imagine que você está aprendendo a cozinhar com seus pais. Você pode usar algumas de suas receitas (métodos herdados) mas adicionar seu próprio toque. Em PHP, parent
permite que você acesse métodos e propriedades da classe pai.
Vamos criar um SuperCounter
que extends nosso Counter
:
class SuperCounter extends Counter {
public function superIncrement() {
parent::increment();
parent::increment();
self::$count++; // Ainda podemos usar self para a propriedade estática herdada
}
}
Usando nosso novo SuperCounter
:
$superCounter = new SuperCounter();
$superCounter->superIncrement();
echo SuperCounter::$count; // Saída: 3
O método superIncrement()
chama o increment()
do pai duas vezes e depois incrementa mais uma vez, resultando em um total de 3.
Tabela de Métodos Relacionados a Static
Vamos resumir os métodos relacionados a estáticos que vimos em uma tabela prática:
Método | Descrição |
---|---|
self::$property |
Acessa uma propriedade estática dentro da mesma classe |
self::method() |
Chama um método estático dentro da mesma classe |
ClassName::$property |
Acessa uma propriedade estática de fora da classe |
ClassName::method() |
Chama um método estático de fora da classe |
parent::method() |
Chama o método de um pai em uma classe filha |
Conclusão
E aí vocês têm, amigos! Exploramos o mundo das propriedades estáticas em PHP, desde o uso básico até a herança. Lembre-se, propriedades estáticas são como o quadro branco da sala de aula - compartilhadas por todos e acessíveis a qualquer pessoa que conheça o nome da classe.
Como com qualquer ferramenta em programação, use propriedades estáticas com sabedoria. Elas são ótimas para contadores, configurações de configuração ou qualquer dado que deve ser compartilhado entre todas as instâncias de uma classe. Mas usá-las em excesso pode levar a código mais difícil de gerenciar e testar.
Continue praticando, e em breve você estará usando propriedades estáticas como um profissional! E lembre-se, na programação, assim como na minha sala de aula, não existem perguntas tolas - apenas oportunidades para aprender. Feliz programação!
Credits: Image by storyset