Foros del Web » Programando para Internet » PHP »

Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Estas en el tema de Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿? en el foro de PHP en Foros del Web. Cómo puede ser que un OBJ tenga propiedades, pero la clase NO tenga ESAS prop ¿? Puedo agregar propiedades QUE NO EXISTEN en ninguna clase ...
  #1 (permalink)  
Antiguo 15/10/2011, 09:30
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Cómo puede ser que un OBJ tenga propiedades, pero la clase NO tenga ESAS prop ¿?

Puedo agregar propiedades QUE NO EXISTEN en ninguna clase a un OBJ?, en ese caso cómo se llama esa asignación?, Magia Gris?

En JAVA tambien existe esa felxibilidad ?
  #2 (permalink)  
Antiguo 15/10/2011, 09:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

No se si JAVA tenga esa flexibilidad, deberías preguntar en el foro de JAVA.

Pero hablando de PHP, si, por lo general se permite lo que dices.

Una simple asignación:
Código PHP:
$foo = new stdClass;
$foo->candy 'BAR'
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/10/2011, 09:44
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Gracias pateketrueke.

Técnicamente ESO cómo se llama?

No se llama "mágia", pero que nombre recibe? (
Puedo agregar propiedades QUE NO EXISTEN en ninguna clase a un OBJ?, en ese caso cómo se llama esa asignación?, Magia Gris?)

Mi inquietud es en PHP, solo que pregunto si en JAVA también existe esa "Magia Gris"...

Cómo se llama eso?
Tendra que ver con polimorfísmo ?
  #4 (permalink)  
Antiguo 15/10/2011, 09:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

¿No reconoces una simple asignación cuando la ves?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 15/10/2011, 11:47
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Cita:
Iniciado por Anarko Ver Mensaje
Gracias pateketrueke.

Técnicamente ESO cómo se llama?

No se llama "mágia", pero que nombre recibe? (
Puedo agregar propiedades QUE NO EXISTEN en ninguna clase a un OBJ?, en ese caso cómo se llama esa asignación?, Magia Gris?)

Mi inquietud es en PHP, solo que pregunto si en JAVA también existe esa "Magia Gris"...

Cómo se llama eso?
Tendra que ver con polimorfísmo ?
No, polimorfismo se refiere a un concepto totalmente diferente, donde los objetos reaccionan de diferentes maneras a un mensaje dadas su posicion en una jerarquia.

La clase stdClass es una clase generica vacia en PHP que permite propiedades dinamicas.

Y no, Java no permite este comportamiento. Lo mas cercano seria crear una propiedad dentro de la clase que sea de tipo Map. Asi puedes agregar "propiedades dinamicamente". Aunque realmente lo que estas haciendo es agregando valores a una propiedad ya definida.
  #6 (permalink)  
Antiguo 15/10/2011, 19:02
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Mmm...

Entonces en PHP esa "Magia GRIS" se llamaria

Propiedades dinamicas ?

P Dinamicas = P que NO EXISTEN EN LA CLASE! correcto ¿?
  #7 (permalink)  
Antiguo 15/10/2011, 19:44
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Esa magia se llama codigo interpretado no codigo compilado. Y java no dispone de esa flexibilidad por que java es muy estricto (ademas de ser compilado), y mal usado el tema se puede hacer una chanchada, cosa que a java no le gusta, pero que a php le encanta.
  #8 (permalink)  
Antiguo 15/10/2011, 19:57
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Se le llama simplemente asignación, es todo, pues le estás asignando un valor a una propiedad.
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #9 (permalink)  
Antiguo 15/10/2011, 20:19
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Cita:
Iniciado por Sourcegeek Ver Mensaje
le estás asignando un valor a una propiedad.
Vale, eso es comprendido...

Solo que LA P no existe en la CLASE !!!

Ese es "el trucaso", el tema de NO EXISTIR LA PROP y aun así asignar un value...

Plop
  #10 (permalink)  
Antiguo 15/10/2011, 21:13
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Si miras javascript que es tambien interpretado y no compilado (aunque se basa en prototipos) veras que podes hacer cosas similares... y en casi cualquier leguaje interpretado se pueden hacer ese tipo de cosas, la variable al no ser declarada existe en el momento que se usa, una propiedad no es mas ni menos que una variable en un objeto.
  #11 (permalink)  
Antiguo 15/10/2011, 21:22
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Bueno, creo que ahora va en negritas: [...]mente asignación[...]
Simple, si no existe la propiedad, se crea y se le asigna el valor correspondiente. ¿Sigues sin entenderme? Mira este ejemplo:
Código PHP:
Ver original
  1. <?php
  2.  
  3. class Ejemplo {
  4.     public function getFoo() {
  5.         return $this->foo;
  6.     }
  7. }
  8.  
  9. $eje = new Ejemplo;
  10. $eje->foo = 'Listo!';
  11.  
  12. echo $eje->getFoo();
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #12 (permalink)  
Antiguo 16/10/2011, 11:02
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Hola Sourcegeek.

Claro que si entiendo el COMO y el POR QUE...

Solo comentaba que no sabia de esa "magia Gris" de PHP...

A la véz que he preguntado ESA MAGIA GRIS ¿como se llama TÉCNICAMENTE?

Aunque la relación no es del 100%, si hay un porcentaje de relación:

Código PHP:
                    $OB_f1=new DateTime('2012-12-21');
                    echo 
'<pre>';
                    
print_r(get_object_vars($OB_f1));
                    echo 
$OB_f1->date
Carambas!!! pero si aqui si existe la propiedad {date}, por que no la imprime...

???

Plis alguna orientación
  #13 (permalink)  
Antiguo 16/10/2011, 12:08
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Ya te lo ha dicho Ronruby, son propiedades dinámicas. con respecto a DateTime, esta marcado como bug que puedas ver la propiedad a traves de un var_dump/print_r, si prestas atención a la sinopsis de la clase veras que no tiene propiedades definidas, si quieres obtener la fecha utiliza DateTime::format

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #14 (permalink)  
Antiguo 16/10/2011, 14:31
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Gracias masterpuppet

Efectivamente mi inquietud es EXACTAMENTE: https://bugs.php.net

Dado que esto escribia hasta hace un par de horas cuando nos comentaste del BUG:

Código PHP:
      $OB_f1=new DateTime('2012-12-21');
      echo 
$OB_f1->date
Obteniendo efectivametne un error.

Tu nos dices:
Código PHP:
echo $OB_f1::date
Eso puede ser PARA TODA PROPIEDAD EN TODO SCRIPT/AMBITO ???
(el uso de ::)

Bien, ahora si creo que los dejo descanzar...


  #15 (permalink)  
Antiguo 16/10/2011, 16:37
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Oh no...

Yo tenia una ventana ERRADA de mi browser.

Esto no funciona
Código PHP:
      $OB_f1=new DateTime('2012-12-21');
      echo 
$OB_f1::$date
el BUG lo anunciaron en 2009...
Ya estamos a 2011 ! ...
  #16 (permalink)  
Antiguo 16/10/2011, 16:54
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Se supone que no debe funcionar, en los comentarios dicen que el echo de que puedas ver las propiedades con var_dump, es un efecto secundario de var_dump(seguramente tenga que ver con el casting a array).
Como te comente antes, debes utilizar DateTime::format, algo así:

Código PHP:
Ver original
  1. $date = new DateTime('2012-12-21');
  2. echo $date->format('Y-m-d') . PHP_EOL;

y te dejo una curiosidad(seguramente por esto se ven las propiedades en con print_r)

Código PHP:
Ver original
  1. $date = (array)new DateTime('2012-12-21');
  2. echo $date['date'] . PHP_EOL;

y me corrijo lo han marcado como request.
__________________
http://es.phptherightway.com/
thats us riders :)
  #17 (permalink)  
Antiguo 16/10/2011, 17:07
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Cómo puede ser que un OBJ tenga propiedades, que no existen en la clase ¿?

Ups...

Pero por que no es BUG ???

Por que asi sí funciona y: continua siendo un OBJ!!!
Código PHP:
      $OB_f1=new DateTime('2012-12-21');
      
$misterio=print_r($OB_f1,1);
      echo 
$OB_f1->date;exit; 
??

Etiquetas: clase, propiedades
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 18:55.