Las clases anónimas en php están disponibles desde la versión 7 de php y son clases que no disponen de un nombre, sino que forman parte de una estructura de apoyo y son muy necesarios al crear objetos simples y únicos que solo se utiliza una sola vez durante la ejecución del programa. Se peden pasar argumentos a través de sus constructores, extender otras clases, implementar interfaces, y utilizar rasgos al igual que una clase normal. Ahora veamos un ejemplo sencillo para crear una clase anónima:
$telefono = new class('Samsung','Galaxy', 'Negro') {
public $marca;
public $modelo;
public $color;
function __construct($marca, $modelo, $color){
$this->marca = $marca;
$this->modelo = $modelo;
$this->color = $color;
}
public function marcaModelo(){
return $this->marca . ' modelo ' . $this->modelo;
}
};
echo $telefono->marcaModelo();
Cuando se crea una clase anónima dentro de otra clase, la clase anónima no tiene acceso a ningún método o propiedad privados o protegidos de la clase externa. Para utilizar las propiedades o métodos protegidos de la clase externa, la clase anónima puede extender la clase externa. Para utilizar las propiedades privadas de la clase externa en la clase anónima, estos deben pasarse a su constructor. Como se puede ver en el siguiente ejemplo: (de la página php.net)
class Externa
{
private $prop = 1;
protected $prop2 = 2;
protected function func1()
{
return 3;
}
public function func2()
{
return new class($this->prop) extends Externa {
private $prop3;
public function __construct($prop)
{
$this->prop3 = $prop;
}
public function func3()
{
return $this->prop2 + $this->prop3 + $this->func1();
}
};
}
}
echo (new Externa)->func2()->func3();
Os recomiendo leer mi post sobre stdclass