Forum und email

Alcance del operador de resolución (::)

El alcance del operador de resolución (también llamado Paamayim Nekudotayim) o en términos simples, dobles dos puntos, es un símbolo que permite acceso a los miembros o métodos estaticos, constantes, y eliminados de una clase.

Cuando se referencían estos elementos desde afuera de la definición de la clase, usan el nombre de la clase.

Paamayin Nekudotayim podrí, en principio, parecer una extraña elección para nombrar un doble-dos-puntos. Sin embargo, mientras se escribia el compilador Zend 0.5, (el cuál da fuerza a PHP 3), ese fue el nombre que el equipo decidió darle. En realidad significa doble-dos-puntos ¡en Hebreo!.

Example#1 :: desde afuera de la definición de la clase

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

echo 
MyClass::CONST_VALUE;
?>

Dos palabras reservadas self y parent son usadas para accesar los miembros o métodos desde adentro de la definición de la clase.

Example#2 :: desde dentro de la definición de la clase

<?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";
    }
}

OtherClass::doubleColon();
?>

Cuando al extender una clase se elimina las definiciones de un método de la clase padre, PHP no llamará el método de la clase padre. Es opcional a la clase extendida decidir si se deba llamar al método de la clase padre. Esto también aplica a Constructores y Destructores, Sobrecarga, y definición de los métodos Mágico.

Example#3 Llamando al método de la clase padre

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