is_a
funkcja
Sprawdza, czy obiekt jest instancją podanej klasy lub jej podklasy. Działa jak `instanceof`, ale akceptuje też nazwę klasy jako string.
is_a(mixed $object_or_class, string $class_name, bool $allow_string = false): bool
is_a zwraca true, gdy $object_or_class jest instancją klasy $class_name lub pochodzi po niej (jest podklasą). Gdy trzeci argument $allow_string to true, pierwszy parametr może być nazwą klasy jako string — funkcja wtedy sprawdza hierarchię klas bez tworzenia obiektu. W kodzie, gdzie klasa jest znana w czasie kompilacji, preferuj operator instanceof: jest czytelniejszy i nie wymaga wywołania funkcji. is_a przydaje się, gdy nazwa klasy pochodzi ze zmiennej lub konfiguracji.
<?php
declare(strict_types=1);
class Pojazd {}
class Samochod extends Pojazd {}
$auto = new Samochod();
var_dump(is_a($auto, 'Samochod')); // bool(true)
var_dump(is_a($auto, 'Pojazd')); // bool(true) — dziedziczy po Pojazd
var_dump(is_a($auto, 'stdClass')); // bool(false)
// Ekwiwalent z instanceof (preferowany gdy klasa znana statycznie):
var_dump($auto instanceof Pojazd); // bool(true)
// allow_string = true — sprawdzenie po nazwie bez instancji:
var_dump(is_a('Samochod', 'Pojazd', true)); // bool(true)
var_dump(is_a('Pojazd', 'Samochod', true)); // bool(false)