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)