Foros del Web » Programando para Internet » PHP »

Comparacion d eobjetos php version 5.3 y su relacion con version 4.0 referecia !==

Estas en el tema de Comparacion d eobjetos php version 5.3 y su relacion con version 4.0 referecia !== en el foro de PHP en Foros del Web. Código PHP: <?php class  Test {     static public function  getNew ()     {         return new static;     } } class  Child  extends  Test {} $obj1  = new  Test (); $obj2  = new  $obj1 ...
  #1 (permalink)  
Antiguo 01/08/2011, 14:53
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 12 años, 8 meses
Puntos: 8
Pregunta Comparacion d eobjetos php version 5.3 y su relacion con version 4.0 referecia !==

Código PHP:
<?php
class Test
{
    static public function 
getNew()
    {
        return new static;
    }
}

class 
Child extends Test
{}

$obj1 = new Test();
$obj2 = new $obj1;
var_dump($obj1 !== $obj2);

$obj3 Test::getNew();
var_dump($obj3 instanceof Test);

$obj4 Child::getNew();
var_dump($obj4 instanceof Child);
?>
resultado:

Cita:
bool(true)<----- What that f... ?
bool(true)
bool(true)
Mi duda recae aqui:


Código PHP:
$obj1 = new Test();
$obj2 = new $obj1;
var_dump($obj1 !== $obj2); 

El operador:
$a == $b Igual TRUE si $a es igual a $b después de la manipulación de tipos.
$a === $b Idéntico TRUE si $a es igual a $b, y son del mismo tipo. (a partir de PHP 4)

$a !== $b No idéntico TRUE si $a no es igual a $b, o si no son del mismo tipo. (a partir de PHP 4)


info adicional:

Si se compara un número con un string o la comparación implica strings numéricos, entonces cada string es convertido en un número y la comparación realizada numéricamente. Estas reglas también se aplican a la sentencia switch. La conversión de tipo no tiene lugar cuando la comparación es === o !== ya que esto involucra comparar el tipo así como el valor.



Creo que puede ser por la version de php por que es extraño.

Lo mas que e entendido es esto === creo que en ese caso tendria mas sentido:

var_dump($obj1 === $obj2);

pero nose alguien que sepa me explique gracias.
  #2 (permalink)  
Antiguo 01/08/2011, 14:57
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: Comparacion d eobjetos php version 5.3 y su relacion con version 4.0 refe

Creo que lo entendi ya perdonen la molestia si lo hacerte claro esta :

/// creo que es por que son del mismo tipo osea pertenecen a la misma clase pero no son iguales por las sensilla razon de que las variables son diferentes si no es asi corrijanme porfavor y gracias.

$obj1 = new Test();
$obj2 = new $obj1;
var_dump($obj1 !== $obj2);

por otro lado me lleva a pensar que se esta clonando el objeto en sierta forma pero creo que es una posibilidad abria que comparar lo con clone (); y ver si existe esa posibilidad o se me queda de tarea o alguien me lo dise gracias.
  #3 (permalink)  
Antiguo 01/08/2011, 15:00
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Comparacion d eobjetos php version 5.3 y su relacion con version 4.0 refe

Cita:
Iniciado por skywolker Ver Mensaje
Creo que lo entendi ya perdonen la molestia si lo hacerte claro esta :

/// creo que es por que son del mismo tipo osea pertenecen a la misma clase pero no son iguales por las sensilla razon de que las variables son diferentes si no es asi corrijanme porfavor y gracias.

$obj1 = new Test();
$obj2 = new $obj1;
var_dump($obj1 !== $obj2);

por otro lado me lleva a pensar que se esta clonando el objeto en sierta forma pero creo que es una posibilidad abria que comparar lo con clone (); y ver si existe esa posibilidad o se me queda de tarea o alguien me lo dise gracias.
No tiene nada que ver el nombre de la variable, es porque son 2 instancias diferentes, prueba esto:

Código PHP:
Ver original
  1. <?php
  2. class Test
  3. {
  4.     static public function getNew()
  5.     {
  6.         return new static;
  7.     }
  8. }
  9.  
  10. class Child extends Test
  11. {}
  12.  
  13. $obj1 = new Test();
  14. $obj2 = new $obj1;
  15.  
  16. var_dump($obj1 !== $obj2, $obj1, $obj2);
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 01/08/2011, 15:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Comparacion d eobjetos php version 5.3 y su relacion con version 4.0 refe

Exacto, son dos objetos diferentes, aunque interactuan a los mismo métodos y propiedades, pero son diferentes los objetos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 01/08/2011, 15:17
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 12 años, 8 meses
Puntos: 8
Pregunta Respuesta: Comparacion d eobjetos php version 5.3 y su relacion con version 4.0 refe

Cita:
Iniciado por abimaelrc Ver Mensaje
Exacto, son dos objetos diferentes, aunque interactuan a los mismo métodos y propiedades, pero son diferentes los objetos.
Wao entonces es que si es asi interactuan en los metodos del objeto madre y a la vez son dos objetos direfentes es decir tenemos 2 objetos osea hemos clonado sin la necesidad de clone() o el que mas me gusta class_alias("mi obj",$madre);
  #6 (permalink)  
Antiguo 01/08/2011, 15:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Comparacion d eobjetos php version 5.3 y su relacion con version 4.0 refe

No exactamente, de esa forma por ejemplo no puedes usar el método mágico __clone.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 01/08/2011, 15:42
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: Comparacion d eobjetos php version 5.3 y su relacion con version 4.0 refe

bueno entonces no es una clonacion es otro objeto creado a partir de otro no es independiente.

Andres en el clavo

es porque son 2 instancias diferentes,:

gracias colega.

Etiquetas: 4-0, comparacion, relacion
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 01:05.