Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Crear objeto y utilizar ::

Estas en el tema de Crear objeto y utilizar :: en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenos días, estoy sumergiendome en el mundo del php orientado a objetos. Tengo una pequeña clase que multiplica dos valores. La llamo de dos maneras, ...
  #1 (permalink)  
Antiguo 16/07/2009, 04:00
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 19 años, 3 meses
Puntos: 0
Crear objeto y utilizar ::

Buenos días,
estoy sumergiendome en el mundo del php orientado a objetos. Tengo una pequeña clase que multiplica dos valores. La llamo de dos maneras, creando un objeto o sin crear objeto.
1.- Me gustaría saber que diferencia hay entre las dos maneras de llamar a la función "hola" (una es creando el objeto y la otra es con "::").
2.- Porque cuando hago la llamada creando objeto se muestra por pantalla "Aki llega 56" y cuando llamo con "::" solo se muestra "Aki llega"?

Saludos y gracias.

Código PHP:
class Multiplica{
  var 
$factor1=7;
  var 
$factor2=8;

  function 
hola(){
        echo(
"Aki llega<br>");
    echo 
$this->factor1*$this->factor2;
  }
}

//////Creando objeto
//$objeto= new Multiplica;
//$objeto->hola();

//////Sin crear objeto
//Multiplica::hola(); 
  #2 (permalink)  
Antiguo 16/07/2009, 07:06
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 17 años, 1 mes
Puntos: 14
Respuesta: Crear objeto y utilizar ::

el operador :: solo permite acceder a atributos/metodos estaticos o constantes

cuando haces

Código PHP:
Multiplica::hola(); 
$this->factor1 y $this->factor2 no existen porque el objeto no fue instanciado entonces por eso no sale nada

si los haces estaticos y cambias el $this por self deberia funcionar


Código PHP:
class Multiplica{
  public static 
$factor1=7;
  public static 
$factor2=8;

  function 
hola(){
        echo(
"Aki llega<br>");
    echo 
self::$factor1*self::$factor2;
  }

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:21.