Clase anónima de PHP

Sheeraz Gul 20 junio 2023
Clase anónima de PHP

Este tutorial enseña clases anónimas en PHP y demuestra cómo crear y usar estas clases usando diferentes ejemplos de código. También aprenderemos cómo anidar una clase anónima en PHP.

Clase anónima de PHP

Como muestra el nombre, la clase anónima es una clase que no tiene nombre. PHP 7 introdujo las características de la clase anónima, y esta clase está pensada para un solo uso.

La clase anónima se define dentro de un objeto de esa clase. El anónimo puede realizar cualquier cosa que realice una clase normal, lo que incluye extender, implementar y usar características; la sintaxis para la clase anónima es:

$Anonymous_Object=new class {
// Your code here
}

Probemos un ejemplo simple para la clase anónima:

<?php
$Anonymous_Object=new class {
    public function Print_Delftstack(){
        echo "Hello, This is delftstack.com";
    }
};
$Anonymous_Object->Print_Delftstack();
?>

El código anterior funcionará como una clase estándar y llamará a la función Print_Delftstack() desde una clase anónima. Ver salida:

Hello, This is delftstack.com

Probemos con otro ejemplo en el que la clase anónima extiende una clase e implementa una interfaz:

<?php
class Demo_Class{
    public function Print_Delftstack1(){
        echo "This is delftstack from a parent class.<br>";
    }
}

interface Demo_Interface{
    public function Print_Delftstack2();
}

$Anonymous_Object=new class() extends Demo_Class implements Demo_Interface {
    public function Print_Delftstack2(){
        echo "This is delftstack from the parent interface; the method is implemented from Demo_Interface.";
    }
};

$Anonymous_Object->Print_Delftstack1();
$Anonymous_Object->Print_Delftstack2();
?>

El código anterior “extiende” una clase e “implementa” una interfaz, luego usa sus métodos con la clase anónima. Ver salida:

This is delftstack from a parent class.
This is delftstack from the parent interface; the method is implemented from Demo_Interface.

Como podemos ver cómo funciona la clase anónima, pero ¿cómo puede funcionar una clase de forma anónima en uso interno? La respuesta a eso es que PHP da un nombre único a la clase anónima; intentemos obtener el nombre de una clase anónima:

<?php
var_dump(get_class(new class() {
    public function Print_Delftstack(){
        echo "Hello, This is delftstack.com";
    }
} ));
?>

El código anterior volcará la información sobre la clase anónima dada, que es el nombre único de la clase anónima; ver la salida:

string(46) "class@anonymousC:\Apache24\htdocs\new.php:2$5" 

Clase anónima anidada en PHP

El anónimo se puede anidar dentro del cuerpo del método de otra clase, pero no puede acceder a los miembros protegidos y privados de la clase externa. Probemos un ejemplo:

<?php
class Demo_Class{
   public function Delftstack1(){
      return new class(){
         public function Delftstack2(){
            echo "This is delftstack two methods from the nested anonymous class.";
         }
      };
   }
}

$Demo_Object=new Demo_Class();
$Demo_Object->Delftstack1()->Delftstack2();
?>

El código anterior muestra cómo implementar la clase anónima anidada en una clase estándar. Ver la salida:

This is delftstack two methods from the nested anonymous class.
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - PHP Class