Пример на static в ООП в PHP

Пусть у нас есть вот такой класс User:

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

Давайте сделаем так, чтобы этот класс подсчитывал количество своих объектов. Для этого сделаем статическое свойство count. Изначально запишем в него значение 0, а при создании каждого нового объекта будем увеличивать это значение на 1.

Будем увеличивать значение нашего счетчика в конструкторе объекта:

User.php<?php
  class User
  {
    public static $count = 0; // счетчик объектов
    public $name;
    
    public function __construct($name)
    {
      $this->name = $name;
      
      // Увеличиваем счетчик при создании объекта:
      self::$count++;
    }
  }
?>

Проверим, что все работает:

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

Сделайте наш счетчик приватным. Пусть его значение можно будет получать с помощью специального метода.