اعلام اعضا و متدهای کلاس به عنوان استاتیک آنها حتی بدون نمونه نیز در دسترس قرار میدهد. یک عضو تعریف شده بصورت استاتیک نمیتواند از طریق یک شی نمونهسازی شده مورد دسترسی واقع شود (از طریق متد میتواند).
برای تطبیق با PHP 4 اگر اعلام visibility بکار رفته باشد آنگاه عضو یا متد بصورتی مورد دسترسی قرار میگیرد که public اعلام شده باشد.
بدلیل قابلیت فراخوانی متدهای استاتیک بدون وجود یک نمونه از شی شبه متغیر $this در داخل متد استاتیک در درسترس نیست.
ویژگشهای Static نمیتوانند با استفاده از عملگر -> از طریق شی مورد دسترسی واقع گردند.
فراخوانی متدهای غیراستاتیک بصورت استاتیک یک هشدار سطح E_STRICT ایجاد مینماید.
همانند سایر متغیرهای استاتیک PHP ویژگیهای استاتیک توسط literal یا constant مقدار اولیه دریافت میکندد; عبارات مجاز نیستند. پس هنگام قرار دادن مقدار اولیه در ویژگی استاتیک integer یا array (به عنوان مثال) شما امکان استفاده از یک متغیر دیگر، مقدار بازگشتی تابع یا شی را نخواهید داشت.
از زمان PHP 5.3.0 میتوان با استفاده از یک متغیر به یک کلاس ارجاع داد. مقدار متغیر نمیتواند کلمه کلیدی باشد (برای نمونه self, parent و static).
Example #1 نمونه عضو Static
<?php
class Foo
{
public static $my_static = 'foo';
public function staticValue() {
return self::$my_static;
}
}
class Bar extends Foo
{
public function fooStatic() {
return parent::$my_static;
}
}
print Foo::$my_static . "\n";
$foo = new Foo();
print $foo->staticValue() . "\n";
print $foo->my_static . "\n"; // Undefined "Property" my_static
print $foo::$my_static . "\n";
$classname = 'Foo';
print $classname::$my_static . "\n"; // As of PHP 5.3.0
print Bar::$my_static . "\n";
$bar = new Bar();
print $bar->fooStatic() . "\n";
?>
Example #2 نمونه متد Static
<?php
class Foo {
public static function aStaticMethod() {
// ...
}
}
Foo::aStaticMethod();
$classname = 'Foo';
$classname::aStaticMethod(); // As of PHP 5.3.0
?>