Clase anonime
Clasele anonime sunt clase care nu au un nume. De obicei, aceste clase sunt utile dacă avem nevoie să creăm o dată un obiect al unei astfel de clase și nu vom mai folosi această clasă ulterior. De exemplu:
$person = new class {};
Pentru a defini o variabilă a unui clasă anonimă, la fel ca în cazul unei clase obișnuite, se folosește operatorul new, urmat de cuvântul cheie class și apoi de corpul clasei în acolade.
Clasele anonime, la fel ca și clasele obișnuite, pot defini proprietăți și metode. De exemplu:
$person = new class {
public $name;
function sayHello(){
echo "Hello!<br>";
}
};
$person->sayHello();
$person->name = "Sam";
echo "Name: " . $person->name . "<br>";
Rezultatul va fi:
Hello!
Name: Sam
De asemenea, clasele anonime pot defini constructori:
$person = new class("Bob") {
public $name;
function __construct($name)
{
$this->name = $name;
}
function sayHello(){
echo "Hello!<br>";
}
};
echo "Hello, " . $person->name . "<br>"; // Hello, Bob
Apelul constructorului se face imediat după cuvântul cheie class și înainte de acolada deschisă: new class("Bob") {.
În mod similar, putem defini proprietăți direct în constructor, reducând astfel definirea clasei:
<?php
$person = new class("Bob", 34) {
function __construct(public $name, public $age)
{
$this->name = $name;
}
function displayInfo()
{
echo "Name: $this->name; Age: $this->age<br>";
}
};
$person->displayInfo();
?>
Rezultatul va fi:
Name: Bob; Age: 34