Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/03/2013, 20:10
aldo_rengo
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 2 meses
Puntos: 3
y esta clase como funciona parte 1

hola una pregunta, estoy viendo el manual de pHP...

y tiene un ejemplo, del cual no entiendo me dicen como es??

aca esta..

http://www.php.net/manual/es/language.oop5.basic.php

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);
?>

este es lo que imprime,,

Código PHP:
bool(true)
bool(true)
bool(true

para empezar lo que veo es esto...



hay una clase, llamada test. esta tiene una funcion estatica, que puede ser llamada sin instanciar, la clase, con los dos puntos asi test::getnew...
bueno esta funcion devuelve algo inusual, a lo que conozco... es como si retornase una palabra reservada de php...

en este caso retorna "new static"

despues hay otra clase llamada, child. que extiende a test, es hija de test.
la clase child no tiene nada... (no se si es obligatorio que las clases contengan un consstructor..)

instancio un objeto de la clase test, este objeto se llama $obj1

despues si $OBJ1 no es una clase, como puedo instanciar a esta, como es posible que se pueda hacer de un objeto otro objeto...?

en algun momento que instancia la primer clase, se toco el metodo function getNew????

despues esa comparacion $obj1 !== $obj2 vendria a ser como si comparase objetos por valor y tipo??

despues en las otras comparaciones llamo al metodo estatico, getnew, a ver...
........

cuando hago que herede... de la clase test... el metodo sera accesible por la clase padre y la hija...

por ejemplo padre::clase_static es lo mismo que hija::clase_static

bueno algo asi sucede. lo que no tengo idea es que contiene $obj3 y $obj4

ya que estos metodos raros devuelven "return new static;"

--------

en el resultado final, creo que devuelve true por que se especifica,, que el metodo es de la misma instancia que compara