Método PHP_existe

Resumo : neste tutorial, você aprenderá como usar a method_exists()função PHP para verificar se uma classe ou objeto de uma classe possui um método especificado.

Introdução à função PHP method_exists

A method_exists()função retorna truese um objeto ou classe tiver um método especificado. Caso contrário, ele retorna false.

A sintaxe da method_exists()função é a seguinte:

method_exists(object|string $object_or_class, string $method): boolLinguagem de código:  PHP  ( php )

O method_exists()tem dois parâmetros:

  • $object_or_classé um objeto ou classe na qual você deseja verificar se existe um método.
  • $methodé uma string que representa o método a ser verificado.

Exemplos de funções PHP method_exists

Vejamos alguns exemplos de uso da method_exists()função.

1) Usando a função PHP method_exists() para verificar se uma classe possui um método

O exemplo a seguir usa a method_exists()função para verificar se existe um método na BankAccountclasse:

<?php

class BankAccount
{
    public function transferTo(BankAccount $other, float $amount)
    {
        // more code
    }
}

$exists = method_exists(BankAccount::class, 'transferTo');
var_dump($exists); // bool(true)

$exists = method_exists(BankAccount::class, 'deposit');
var_dump($exists); // bool(false)Linguagem de código:  PHP  ( php )

Neste exemplo, a seguinte instrução é retornada trueporque o transferTométodo existe na BankAccountclasse:

method_exists(BankAccount::class, 'transferTo');Linguagem de código:  PHP  ( php )

No entanto, a instrução a seguir é retornada falseporque o depositmétodo não existe na BankAccountclasse:

method_exists(BankAccount::class, 'deposit');Linguagem de código:  PHP  ( php )

2) Usando a função PHP method_exists para verificar se um objeto possui um método

O exemplo a seguir cria um novo objeto BankAccounte usa a method_exists()função para verificar se o objeto possui um método especificado:

<?php

class BankAccount
{
    public function transferTo(BankAccount $other, float $amount)
    {
        // more code
    }
}

$account = new BankAccount();

$exists = method_exists($account, 'transferTo');
var_dump($exists); // bool(true)

$exists = method_exists($account, 'deposit');
var_dump($exists); // bool(false)Linguagem de código:  PHP  ( php )

O $accountobjeto possui o transferTométodo, portanto, a seguinte instrução retorna true:

method_exists($account, 'transferTo');Linguagem de código:  PHP  ( php )

Por outro lado, o objeto $account não possui o depositmétodo. Portanto, a seguinte instrução retorna false:

method_exists($account, 'deposit');Linguagem de código:  PHP  ( php )

3) Usando a função method_exists para verificar se um objeto possui um método estático

O method_exists()também retorna truese uma classe tiver um método estático . Por exemplo:

<?php

class BankAccount
{
    public function transferTo(BankAccount $other, float $amount)
    {
        // more code
    }

    public static function compare(BankAccount $other): bool
    {
        // implementation
        // ...
        return false;
    }
}

$exists = method_exists(BankAccount::class, 'compare');
var_dump($exists); // bool(true)

$account = new BankAccount();
$exists = method_exists($account, 'compare');
var_dump($exists); // bool(true)Linguagem de código:  PHP  ( php )

O BankAccounttem o comparemétodo estático, então a seguinte instrução retorna true:

method_exists(BankAccount::class, 'compare');Linguagem de código:  PHP  ( php )

O $accounté uma instância da BankAccountclasse que possui o comparemétodo estático, a seguinte expressão também retorna true:

$exists = method_exists($account, 'compare');Linguagem de código:  PHP  ( php )

Função PHP method_exists em estruturas MVC

O method_exists()método é frequentemente usado em estruturas Model-View-Controller (MVC) para verificar se uma classe de controlador possui um determinado método antes de chamá-lo.

Por exemplo, suponha que você tenha o seguinte URI de solicitação:

/posts/edit/1Linguagem de código:  PHP  ( php )

Este URI tem três partes: posts, edit e 1.

  • Os postsmapas para a PostsControllerturma.
  • O editmapeia o editmétodo da classe.
  • O número 1é o ID da postagem a ser editada.

A PostsControllerclasse ficará assim:

<?php

class PostsController
{
    public function edit(int $id)
    {
        // show the edit post form
    }
}Linguagem de código:  PHP  ( php )

E você usa a method_exists()função para verificar se o método de edição existe no $controllerobjeto assim:

<?php
// ...
if(method_exists($controller, $action))
{
    $controller->$action($id);
}Linguagem de código:  PHP  ( php )

Resumo

  • Use a função PHP method_exists()para verificar se um objeto ou classe possui um método especificado.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *