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!

PHP - Static Properties

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:

  1. Elas são compartilhadas entre todas as instâncias de uma classe.
  2. Elas podem ser acessadas sem criar um objeto da classe.
  3. 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:

  1. Declaramos uma propriedade estática $count e inicializamos-a em 0.
  2. O método increment() aumenta a contagem em 1.
  3. 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