method_exists în PHP

Verifică dacă o clasă sau un obiect are o metodă cu un anumit nume.

Sintaxă
method_exists($object_or_class, string $method): bool

Ce face method_exists

method_exists primește un obiect sau numele unei clase și numele metodei. Returnează true dacă metoda este definită, indiferent de vizibilitate (inclusiv private) și inclusiv dacă este moștenită.

Numele metodelor nu țin cont de majuscule în PHP, deci nici verificarea. Metodele „virtuale” tratate prin __call nu sunt găsite. Dacă vrei să știi dacă poți apela efectiv metoda din locul curent, folosește is_callable([$obiect, "metoda"]).

Parametri

Parametru Descriere
$object_or_class Obiectul sau numele clasei.
$method Numele metodei căutate.

Ce returnează

true dacă metoda există, altfel false.

Exemple

Exemplul 1: Verificări simple

<?php
class Raport
{
    public function exportPdf() {}
    private function calculeaza() {}
}

var_dump(method_exists("Raport", "exportPdf"));
var_dump(method_exists(new Raport(), "EXPORTPDF"));
var_dump(method_exists("Raport", "calculeaza"));
var_dump(is_callable([new Raport(), "calculeaza"]));
var_dump(method_exists("Raport", "exportCsv"));

Rezultat

bool(true)
bool(true)
bool(true)
bool(false)
bool(false)

Exemplul 2: Funcționalitate opțională

<?php
class Articol
{
    public function titlu(): string { return "Ghid PHP"; }
    public function rezumat(): string { return "Primii pași în PHP."; }
}

class Pagina
{
    public function titlu(): string { return "Contact"; }
}

foreach ([new Articol(), new Pagina()] as $element) {
    echo $element->titlu();
    if (method_exists($element, "rezumat")) {
        echo " - " . $element->rezumat();
    }
    echo "\n";
}

Rezultat

Ghid PHP - Primii pași în PHP.
Contact

Greșeli frecvente

  • Folosești method_exists ca să decizi dacă poți apela o metodă din afara clasei. Funcția returnează true și pentru metode private, iar apelul aruncă apoi Error. Folosește is_callable.

Comenzi înrudite