Exemplo de static em POO em PHP

Suponha que temos a seguinte classe User:

User.php<?php
  class User
  {
    public $name;
    
    public function __construct($name)
    {
      $this->name = $name;
    }
  }
?>

Vamos fazer com que esta classe conte o número de seus objetos. Para isso, vamos criar uma propriedade estática count. Inicialmente vamos definir seu valor como 0, e na criação de cada novo objeto vamos aumentar esse valor em 1.

Vamos aumentar o valor do nosso contador no construtor do objeto:

User.php<?php
  class User
  {
    public static $count = 0; // contador de objetos
    public $name;
    
    public function __construct($name)
    {
      $this->name = $name;
      
      // Aumentamos o contador ao criar o objeto:
      self::$count++;
    }
  }
?>

Vamos verificar se está funcionando:

index.php<?php
  $user1 = new User('user1');
  echo User::$count; // exibirá 1
  
  $user2 = new User('user2');
  echo User::$count; // exibirá 2
?>
Задание 1

Torne nosso contador privado. Deixe que seu valor possa ser obtido usando um método especial.