Operador de Resoluci贸n de Contexto (::)

Operador de Resoluci贸n de Contexto (::)

Atenci贸n

Lo siguiente es v谩lido 煤nicamente para PHP 4 y versiones posteriores.

Algunas veces es 煤til referirse a funciones y variables en clases base o referirse a funciones en clases que no tienen aun alguna instancia. El operador :: es usado en tales casos.

<?php
class A {
    function
ejemplo() {
        echo
"Soy la funci&oacute;n original A::ejemplo().<br />\n";
    }
}

class
B extends A {
    function
ejemplo() {
        echo
"Soy la funci&oacute;n redefinida B::ejemplo().<br />\n";
        
A::ejemplo();
    }
}

// no hay un objeto de la clase A.
// esto imprime
//   Soy la funcion original A::ejemplo().<br />
A::ejemplo();

// crear un objeto de clase B.
$b = new B;

// esto imprime
//   Soy la funcion redefinida B::ejemplo().<br />
//   Soy la funcion original A::ejemplo().<br />
$b->ejemplo();
?>

El ejemplo anterior llama la funci贸n ejemplo() en la clase A, pero no hay un objeto de la clase A, as铆 que no podemos escribir $a->ejemplo() o algo semejante. En su lugar llamamos ejemplo() como una 'funci贸n de clase', es decir, una funci贸n de la clase misma, no de un objeto de tal clase.

Existen funciones de clase, pero no existen variables de clase. De hecho, no hay un objeto en absoluto al momento de la llamada. Por lo tanto, una funci贸n de clase no puede usar variables del objeto (pero puede usar variables locales y globales), y quiz谩s no pueda usar $this en absoluto.

En el ejemplo anterior, la clase B redefine la funci贸n ejemplo(). La definici贸n original en la clase A es cubierta y ya no se encuentra disponible, a menos que haga referencia espec铆ficamente a la implementaci贸n de ejemplo() en la clase A usando el operador ::. Escriba A::ejemplo() para hacerlo (en realidad, deber铆a usar parent::ejemplo(), como se muestra en la siguiente secci贸n).

En este contexto, hay un objeto actual y puede tener variables de objeto. Por lo tanto, cuando se usa DESDE EL INTERIOR de una funci贸n de objeto, es posible usar $this y variables de objeto.