OOP - Static Properties

🔹 Static Property چیست؟

  • Property (ویژگی/متغیر) استاتیک با کلمه کلیدی static تعریف میشه.

  • مثل متدهای استاتیک، برای استفاده ازشون نیازی به ایجاد شیء (Object) نداریم.

  • مستقیماً با نام کلاس در دسترس هستن.

🔹 تعریف Static Property

<?php class Car { public static $brand = "BMW"; } // دسترسی بدون شیء echo Car::$brand; ?>

📌 خروجی:

BMW

🔹 دسترسی به Static Property از داخل کلاس

برای دسترسی داخل کلاس از self:: استفاده می‌کنیم:

<?php class Car { public static $brand = "BMW"; public function showBrand() { return self::$brand; } } $myCar = new Car(); echo $myCar->showBrand(); ?>

📌 خروجی:

BMW

🔹 تغییر مقدار Static Property

<?php class Counter { public static $count = 0; public function increase() { self::$count++; } } $a = new Counter(); $b = new Counter(); $a->increase(); $b->increase(); echo Counter::$count; ?>

📌 خروجی:

2

👉 چون ویژگی استاتیک بین تمام اشیاء کلاس مشترک هست، مقدارش با تغییر یکی از اشیاء تغییر می‌کنه.

🔹 ارث‌بری و Static Properties

ویژگی‌های استاتیک در کلاس فرزند هم قابل دسترسی هستن:

<?php class ParentClass { public static $name = "Parent"; } class ChildClass extends ParentClass {} echo ChildClass::$name; ?>

📌 خروجی:

Parent

✅ خلاصه

  • ویژگی‌های استاتیک با static تعریف میشن.

  • نیازی به ساخت شیء ندارن → ClassName::$property.

  • داخل کلاس از self::$property استفاده میشه.

  • بین همه اشیاء کلاس مشترک هستن.

  • در کلاس‌های فرزند هم به ارث می‌رسن.