Ver Mensaje Individual
  #7 (permalink)  
Antiguo 11/02/2003, 21:29
Herminio Heredia San
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 23 años, 1 mes
Puntos: 6
Cita:
Segundo.
Tanto la primera como la segunda definición creo que son equivalentes (CREO no es del todo seguro).
$this->Cabeceras = MailLib::Cabeceras();
$this->Cabeceras = $this->Cabeceras();
Como comento por hay josemi el uso que le estas dando al operador ::, no es el adecuado a un cuando paresca lo mismo. La idea de ese operador es parecido a lo que en java llaman metodos estaticos los cuales no necesitan un instancia de la clase par aser accedidos. La restriccion en PHP es que un llamado de esa naturaleza solo llama al metodo no hay objeto durante el llamado de la funcion, ni variables. solo las locales y las globales del objeto que hace la llamada. Y bueno el que puedas hacerlo es por la flexibilidad que tiene php, pero a nivel de diseño como lo comento josemi no es del todo correcto.
El operdor :: es usado generalmente cuando hay necesidad de enviar mensajes entre objetos (aparte de la de hacer llamadas a metodos de una clase padre). Pero en el cual ninguno de los objetos controla la instancia de los otros. Es decir queremos comuncar de alguna forma ambos objetos.

Ejemplo:
Código PHP:
class {

       function 
html_entities$html_text )
      {
           return 
htmlentities$html_text ); 
      }
}

class 
B{

       function 
mostrar$text )
       {
            
$text :: html_entities$text );
            echo 
$text;
       }
}

$obj = &new B;
$obj ->mostrar"algo con html"); 
Como podemos observar la clase B se encarga de mandar un mensaje a la clase A para convertir el texto a su equivalente en entidades de html para no ser interpretadas por el navegador antes de que se desplieguen los datos. Donde B es una clase de control que delega responsabilidad a la clase A. Es un ejemplo sencillo pero creo que sirve para aclarar el uso del operador ::

Nota: Si la clase requiere hacer uso de un metodo de la clase padre se puede usar el operador parent