Przykład na static w OOP w PHP

Załóżmy, że mamy taką klasę User:

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

Zróbmy tak, aby ta klasa zliczała liczbę swoich obiektów. W tym celu utwórzmy statyczną właściwość count. Początkowo zapiszmy w niej wartość 0, a przy tworzeniu każdego nowego obiektu zwiększajmy tę wartość o 1.

Będziemy zwiększać wartość naszego licznika w konstruktorze obiektu:

User.php<?php
  class User
  {
    public static $count = 0; // licznik obiektów
    public $name;
    
    public function __construct($name)
    {
      $this->name = $name;
      
      // Zwiększamy licznik przy tworzeniu obiektu:
      self::$count++;
    }
  }
?>

Sprawdźmy, czy wszystko działa:

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

Uczyń nasz licznik prywatnym. Niech jego wartość można uzyskać za pomocą specjalnej metody.