Օրինակ static-ի մասին OOP-ում 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

Դարձրեք մեր հաշվիչը պրիվատ: Թող նրա արժեքը հնարավոր լինի ստանալ հատուկ մեթոդի միջոցով: