Classe PHP_existe

Resumo : neste tutorial você aprenderá como usar a class_exists()função PHP para verificar se uma classe existe ou não.

Introdução à função class_exists() do PHP

A class_exists()função aceita um nome de classe e retorna truese a classe existe ou falsenão.

class_exists(string $class, bool $autoload = true): boolLinguagem de código:  PHP  ( php )

A class_exists()função possui dois parâmetros:

  • $classespecifica o nome da classe a ser verificada.
  • $autoloaddetermina se deve ser chamada spl_autoload_register()por padrão.

Observe que class_exists()não faz distinção entre maiúsculas e minúsculas. Isso significa que se você tiver uma classe com o nome User, class_exists(‘user’) retornará verdadeiro.

A class_exists()função é frequentemente usada em estruturas model-view-controller (MVC) para carregar a classe do controlador com base em uma rota.

Exemplos de funções PHP class_exists()

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

1) Usando a função PHP class_exists() para verificar se existe uma classe

Primeiro, defina uma classe Userno User.phparquivo:

<?php

class User
{
}Linguagem de código:  PHP  ( php )

Segundo, solicite o User.phparquivo index.php e use a class_exists()função para verificar se a Userclasse existe:

<?php

require 'User.php';

if (class_exists('User')) {
    echo 'The class User exists';
} else {
    echo 'The class User does not exist';
}Linguagem de código:  PHP  ( php )

Como a requireconstrução carrega a User.phpclasse, você verá a seguinte saída:

The class User existsLinguagem de código:  PHP  ( php )

Se você comentar a requireinstrução e executar o script novamente, verá a seguinte saída:

The class User does not existLinguagem de código:  PHP  ( php )

2) Usando a função PHP class_exists() para verificar se existe uma classe com espaço nomeado

Primeiro, adicione o Appnamespace à Userclasse:

<?php

namespace App;

class User
{
}Linguagem de código:  PHP  ( php )

Segundo, execute o seguinte script:

<?php

require 'User.php';

if (class_exists('User')) {
    echo 'The class User exists';
} else {
    echo 'The class User does not exist';
}Linguagem de código:  PHP  ( php )

… você verá a seguinte saída:

The class User does not existLinguagem de código:  PHP  ( php )

O motivo é que a Userclasse tem namespace. O nome da classe é App\User, não User.

Para corrigir isso, você pode usar o nome de classe totalmente qualificado assim:

<?php

require 'User.php';

if (class_exists('App\User')) {
    echo 'The class App\User exists';
} else {
    echo 'The class Appp\User does not exist';
}Linguagem de código:  PHP  ( php )

Se você executar o script novamente, verá esta saída:

The class App\User existsLinguagem de código:  PHP  ( php )

3) Usando class_exists() com o alias da classe

O class_exists()não funciona com o nome de classe com alias. Por exemplo:

require 'User.php';
use App\User as Account;
var_dump(class_exists('Account')); // bool(false)    Linguagem de código:  PHP  ( php )

4) Usando o exemplo PHP class_exists() com spl_autoload_register()

Primeiro, defina a Userclasse no User.phparquivo da apppasta da seguinte forma:

<?php

namespace App;

class User
{
    public function avartar(): string
    {
        return 'default';
    }
}Linguagem de código:  PHP  ( php )

Segundo, crie um index.phparquivo na pasta raiz e coloque o seguinte código:

<?php

spl_autoload_register(function ($class) {
    echo 'Loading the class ' . $class . '<br>';
    require $class . '.php';
});

class_exists('App\User');
echo 'Create a new user' . '<br>';

$user = new App\User();
echo $user->avartar();Linguagem de código:  PHP  ( php )

Saída:

Loading the class App\User
Create a new user
default{"mode":"full","isActive":false}Linguagem de código:  PHP  ( php )

Como funciona.

Primeiro, a class_exists()função verifica se a App\Userclasse existe e chama a spl_autoload_register()função para carregar o User.phparquivo da apppasta.

Segundo, crie uma nova instância da classe App\Usere chame o avartar()método.

Resumo

  • Use a função PHP class_exists()para verificar se uma classe existe ou não.
  • Use o nome completo da classe se ela tiver namespace.

Deixe um comentário

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