Пример за 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

Направете нашия брояч приватно свойство. Нека стойността му да може да се получава чрез специален метод.