خواص استاتیک (Static Properties)
«خاصیت استاتیک (Static Property)» یعنی مقداری که به خود کلاس تعلق دارد، نه شیء. بنابراین، می توانیم آن را بدون ساخت شیء بخوانیم. در PHP این ویژگی با کلیدواژه static تعریف می شود.
تعریف خاصیت استاتیک
خاصیت را داخل کلاس و با static می نویسیم. سپس مستقیم می خوانیم.
<?php
class ClassName {
public static $staticProp = "W3Schools";
}
?>
دسترسی مستقیم با ::
برای دسترسی، نام کلاس، دو نقطه :: و نام خاصیت را بنویس.
ClassName::$staticProp;
نمونه ساده خواندن
اینجا مقدار $value را مستقیم چاپ می کنیم. شیء لازم نیست.
<?php
class pi {
public static $value = 3.14159;
}
// Get static property
echo pi::$value;
?>
خواندن داخل همان کلاس با self::
self یعنی «همین کلاس». بنابراین با self::$prop مقدار را می گیریم.
<?php
class pi {
public static $value = 3.14159;
public function staticValue() {
return self::$value;
}
}
$pi = new pi();
echo $pi->staticValue();
?>
ارث بری: دسترسی با parent:: و کلاس فرزند
در فرزند می توانی از parent::$prop استفاده کنی. همچنین مستقیم از نام کلاس فرزند بخوان.
<?php
class pi {
public static $value = 3.14159;
}
class x extends pi {
public function xStatic() {
return parent::$value;
}
}
// دسترسی مستقیم از کلاس فرزند
echo x::$value;
// دسترسی از طریق متد فرزند
$x = new x();
echo $x->xStatic();
?>
نکته: خاصیت استاتیک برای همه اشیای کلاس مشترک است. بنابراین، تغییرش همه جا اثر دارد.
گام های عملی
- یک کلاس با
public staticبساز. - با
ClassName::$propمقدار را چاپ کن. - یک متد بساز و با
self::$propبرگردان. - یک کلاس فرزند بساز و با
parent::$propبخوان.
برای کامل تر شدن، متدهای استاتیک را بخوان. همچنین مطلب اینترفیس ها به درک طراحی کمک می کند. برای مرور، از پیوند خواص استاتیک در PHP استفاده کن.
جمع بندی سریع
- خاصیت استاتیک به کلاس تعلق دارد.
- بدون شیء با
::قابل دسترسی است. - داخل کلاس از
self::$propاستفاده کن. - در فرزند از
parent::$propکمک بگیر.