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)
📘 Naucz się w lekcji →