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.

Hosting by: hurra.com
Generated: 2007-01-26 18:01:09