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

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

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

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

Пример 19-11. :: извън дефиниция на клас

<?php
class MyClass {
    const CONST_VALUE = 'Стойност на константата';
}

echo MyClass::CONST_VALUE;
?>

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

Пример 19-12. :: в дефиниция на клас

<?php
class OtherClass extends MyClass
{
    public static $my_static = 'статична променлива';

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

OtherClass::doubleColon();
?>

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

Пример 19-13. Извикване на метод на родителски клас

<?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();
?>