کلاس‌‌ها و اشیا (PHP 5)
PHP Manual

عملگر تعیین حوزه (::)

عملگر تعیین حوزه (همچنین Paamayim Nekudotayim) یا به عبارت ساده‌تر کلمه‌ای برای دسترسی به static٬ constant٬ و ویژگی‌های بازنویسی شده یا متدهای کلاس است.

هنگام ارجاع به این موارد از خارج تعریف یک کلاس از نام کلاس استفاده کنید.

از زمان PHP 5.3.0 امکان ارجاع به یک کلاس از طریق متغیر ممکن است. مقدار متغیر نمی‌تواند یک کلمه کلیدی باشد (به عنوان نمونه self٬ parent و static).

Paamayim Nekudotayim در ابتدا یک انتخاب عجیب محسوب می‌شود که این نام برای :: بکار رود. به هر حال هنگام نوشته شدن Zend Engine 0.5 (در PHP 3) تیم Zend آن را به این نام خواندند. در هر حالت به زبان عبری به معنای :: است!

Example #1 :: از خارج تعریف کلاس

<?php
class MyClass {
    const 
CONST_VALUE 'A constant value';
}

$classname 'MyClass';
echo 
$classname::CONST_VALUE// As of PHP 5.3.0

echo MyClass::CONST_VALUE;
?>

دو کلمه کلیدی ویژه self و parent برای دسترسی به ویژگی‌ها و متدها در داخل تعریف کلاس است.

Example #2 :: از داخل تعریف کلاس

<?php
class OtherClass extends MyClass
{
    public static 
$my_static 'static var';

    public static function 
doubleColon() {
        echo 
parent::CONST_VALUE "\n";
        echo 
self::$my_static "\n";
    }
}

$classname 'OtherClass';
echo 
$classname::doubleColon(); // As of PHP 5.3.0

OtherClass::doubleColon();
?>

هنگامی که گسترش کلاس تعریف یک متد را بازنویسی می‌نماید. PHP تابع والد را فرا نخواهد خواند. این بر عهده کلاس گسترش یافته است که متد کلاس والد را فراخواند یا نه. این مورد به سازنده‌ها و نابودکننده‌ها٬ سربارگذاری٬ و جادو تعریف‌های متد است.

Example #3 فراخوانی والد یک متد

<?php
class MyClass
{
    protected function 
myFunc() {
        echo 
"MyClass::myFunc()\n";
    }
}

class 
OtherClass extends MyClass
{
    
// Override parent's definition
    
public function myFunc()
    {
        
// But still call the parent function
        
parent::myFunc();
        echo 
"OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>

کلاس‌‌ها و اشیا (PHP 5)
PHP Manual