Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/08/2011, 14:53
Avatar de skywolker
skywolker
 
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 13 años, 4 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.