Trabajando con objetos¶
Al trabajar con clases y objetos, existe un conjunto de funciones ya definidas por el lenguaje que permiten obtener información sobre los objetos:
instanceof
: permite comprobar si un objeto es de una determinada clase.get_class
: devuelve el nombre de la clase.get_declared_class
: devuelve un array con los nombres de las clases definidas.class_alias
: crea un alias.class_exists
/method_exists
/property_exists
:true
si la clase / método / propiedad está definida.get_class_methods
/get_class_vars
/get_object_vars
: devuelve un array con los nombres de los métodos / propiedades de una clase / propiedades de un objeto que son accesibles desde donde se hace la llamada.
Un ejemplo de estas funciones puede ser el siguiente:
ejemploobjeto.php
<?php
$p = new Producto("PS5");
if ($p instanceof Producto) {
echo "Es un producto";
echo "La clase es " . get_class($p);
class_alias("Producto", "Articulo");
$c = new Articulo("Nintendo Switch");
echo "Un artículo es un " . get_class($c);
print_r(get_class_methods("Producto"));
print_r(get_class_vars("Producto"));
print_r(get_object_vars($p));
if (method_exists($p, "mostrarResumen")) {
$p->mostrarResumen();
}
}
Es un producto
La clase es Producto
Un artículo es un Producto
Array ( [0] => __construct [1] => mostrarResumen )
Array ( )
Array ( )
Clonado
Al asignar dos objetos, no se copian; se crea una nueva referencia. Si se necesita una copia, hay que clonarlo mediante el método clone(object) : object
// Creamos el objeto original
$original = new Producto("PS5", 499.99);
// Clonamos el objeto
$copia = clone $original;
Si queremos modificar el clonado por defecto, hay que definir el método mágico __clone()
, que se ejecutará después de copiar todas las propiedades.
Más información en la documentación oficial