method_exists

funkcja

Sprawdza, czy dana metoda istnieje w klasie lub obiekcie. Przyjmuje obiekt lub nazwę klasy jako string — niezależnie od widoczności.

method_exists(object|string $object_or_class, string $method): bool

method_exists zwraca true, gdy metoda o podanej nazwie jest zdefiniowana w klasie — niezależnie od jej widoczności (public, protected, private). Jako pierwszy argument możesz przekazać obiekt lub nazwę klasy jako string. Funkcja jest przydatna przy pracy z wtyczkami i looselytyped API, gdzie chcesz sprawdzić, czy obiekt obsługuje daną operację, zanim ją wywołasz. Dla interfejsów rozważ instanceof — jest bardziej rygorystyczny i czytelniejszy.

<?php
declare(strict_types=1);

class Samochod
{
    public function jedz(): void
    {
        echo "Jadę!\n";
    }

    private function tankowal(): void {}
}

$auto = new Samochod();

var_dump(method_exists($auto, 'jedz'));       // bool(true)
var_dump(method_exists($auto, 'tankowal'));   // bool(true)  — private też true
var_dump(method_exists($auto, 'lec'));        // bool(false)

// Działa też z nazwą klasy:
var_dump(method_exists('Samochod', 'jedz')); // bool(true)
📘 Naucz się w lekcji →