property_exists

funkcja

Sprawdza, czy dana właściwość istnieje w klasie lub obiekcie — niezależnie od widoczności: public, protected lub private.

property_exists(object|string $object_or_class, string $property): bool

property_exists zwraca true, jeśli właściwość o podanej nazwie jest zadeklarowana w klasie — bez względu na to, czy jest public, protected czy private. Pierwszym argumentem może być obiekt lub nazwa klasy jako string. W odróżnieniu od isset() funkcja nie sprawdza wartości: property_exists zwróci true nawet jeśli właściwość istnieje, ale ma wartość null. To czyni ją bardziej niezawodną przy introspeksji struktury klasy.

<?php
declare(strict_types=1);

class Ksiazka
{
    public string $tytul = 'Potop';
    protected int $rok = 1886;
    private string $isbn = '978-83-000-0002-8';
}

$k = new Ksiazka();

var_dump(property_exists($k, 'tytul'));   // bool(true)  — public
var_dump(property_exists($k, 'rok'));     // bool(true)  — protected
var_dump(property_exists($k, 'isbn'));    // bool(true)  — private
var_dump(property_exists($k, 'autor'));   // bool(false) — nie istnieje

// Działa też z nazwą klasy jako stringiem:
var_dump(property_exists('Ksiazka', 'tytul')); // bool(true)
📘 Naucz się w lekcji →