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.