اعضای Static
اگر بخواهیم عضو دادهای (فیلد) یا خاصیتی ایجاد کنیم که در همه نمونههای کلاس قابل دسترسی باشد از کلمه کلیدی static استفاده میکنیم. کلمه کلیدی static برای اعضای دادهای و خاصیتهایی به کار میرود که میخواهند در همه نمونههای کلاس تقسیم شوند. وقتی که یک متد یا خاصیت به صورت static تعریف شود، میتوانید آنها را بدون ساختن نمونهای از شیء، فراخوانی کنید. برای فراخوانی یک عضو استاتیک ابتدا نام کلاس سپس علامت دو نقطه (::) و در آخر نام عضو استاتیک را مینویسید :
Class Name :: Static Member
به مثالی در مورد متدها و خاصیتهای static توجه کنید :
1:<?php 2: 3: class SampleClass 4: { 5: static $number = 10; 6: 7: static function PrintNumber() 8: { 9: echo self::$number; 10: } 11: 12: static function ShowStaticMessage() 13: { 14: echo 'This is a Static Function!'; 15: } 16: } 17: 18: SampleClass::PrintNumber (); 19: echo '<br/>'; 20: SampleClass::ShowStaticMessage (); 21: 22:?>
This is a Static Function! 10
همانگونه که در کد بالا مشاهده میکنید یک کلاس (خطوط 16-3) تعریف کردهایم که دارای یک متغیر (خط 5) و دو متد (خطوط 10-7 و خطوط 15-12) از نوع استاتیک میباشد. برای دسترسی به متد یا متغیرهای استاتیک به دو صورت زیر عمل میکنیم :
اگر بخواهیم به یک متغیر استاتیک در داخل یک متد استاتیک دسترسی داشته باشیم به جای استفاده از کلمه کلیدی this از کلمه کلیدی self و به جای علامت <- از علامت:: استفاده میکنیم. مثلاً در خط 9 مثال بالا برای چاپ متغیر number که استاتیک است در داخل متد استاتیک ()PrintNumber به روشی که ذکر شد، عمل کردهایم. اما اگر بخواهیم به یکی از اعضای استایک کلاس در خارج از کلاس دسترسی داشته باشیم لازم نیست که از کلاس نمونه ایجاد کنیم و فقط کافیست که نام کلاس را نوشته و بعد از آن علامت دو نقطه و در آخر نام عضو استاتیک را بنویسید مانند خطوط 18 و 20 مثل بالا.