ตัวอย่างการใช้ static ใน OOP ใน PHP

สมมติว่าเรามีคลาส User แบบนี้:

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

ลองทำให้คลาสนี้นับจำนวนอ็อบเจ็กต์ของตัวเอง เพื่อการนี้ สร้างคุณสมบัติแบบ static 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

ทำให้ตัวนับของเราเป็น private ให้สามารถรับค่าของมันได้ ผ่านเมธอดพิเศษ