Класове и обекти (PHP 5)
PHP Manual

Оператор за област на действие (::)

Операторът за област на действие (също така, познат като Paamayim Nekudotayim) или просто двойно двоеточие, е символ, който предоставя достъп до статични и повторно-дефинирани свойства и методи на даден клас и константи.

Когато се обръщате към тези полета извън дефиницията на съответния клас, използвайте името на класа.

От PHP 5.3.0 е възможно да се обърнете към клас посредством променлива. Стойността на променливата не може да бъде ключова дума (напр. self, parent и static не са позволени при динамичните референции към класове.

В началото Paamayim Nekudotayim може да ви се стори доста странен избор за име на двойното двоеточие. Докато се пишеше Zend Engine 0.5 (който е в основата на PHP 3), екипът на Zend реши да го кръсти така. Всъщност, това означава двойно двоеточие на иврит.

Example #1 :: извън дефиниция на клас

<?php
   
class MyClass {
   const 
CONST_VALUE 'Стойност на константата';
   }
   
   
$classname 'MyClass';
   echo 
$classname::CONST_VALUE// От PHP 5.3.0
   
   
echo MyClass::CONST_VALUE;
   
?>

Съществуват две специални ключови думи - self и parent, които се използват за достъп до свойства или методи вътре в дефиницията на класа.

Example #2 :: в дефиниция на клас

<?php
   
class OtherClass extends MyClass
   
{
   public static 
$my_static 'статична променлива';
   
   public static function 
doubleColon() {
   echo 
parent::CONST_VALUE "\n";
   echo 
self::$my_static "\n";
   }
   }
   
   
$classname 'OtherClass';
   echo 
$classname::doubleColon(); // От PHP 5.3.0
   
   
OtherClass::doubleColon();
   
?>

Когато в дъщерен клас се дефинира повторно метод от родителски клас, PHP няма да извика родителския метод. Това дали да се извика родителския метод или не, се решава от дъщерния клас. Същото важи и за дефинициите на Конструкторите и деструкторите, Повторно-дефинираните и Вълшебните методи.

Example #3 Извикване на метод на родителски клас

<?php
   
class MyClass
   
{
   protected function 
myFunc() {
   echo 
"MyClass::myFunc()\n";
   }
   }
   
   class 
OtherClass extends MyClass
   
{
   
// Повторно дефиниране на метод на родителския клас
   
public function myFunc()
   {
   
// Извикване на метода на родителския клас
   
parent::myFunc();
   echo 
"OtherClass::myFunc()\n";
   }
   }
   
   
$class = new OtherClass();
   
$class->myFunc();
   
?>

Класове и обекти (PHP 5)
PHP Manual