عملگر تعیین حوزه (همچنین 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();
?>