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 true
se a classe existe ou false
não.
class_exists(string $class, bool $autoload = true): bool
Linguagem de código: PHP ( php )
A class_exists()
função possui dois parâmetros:
$class
especifica o nome da classe a ser verificada.$autoload
determina se deve ser chamadaspl_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 User
no User.php
arquivo:
<?php
class User
{
}
Linguagem de código: PHP ( php )
Segundo, solicite o User.php
arquivo index.php e use a class_exists()
função para verificar se a User
classe 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 require
construção carrega a User.php
classe, você verá a seguinte saída:
The class User exists
Linguagem de código: PHP ( php )
Se você comentar a require
instrução e executar o script novamente, verá a seguinte saída:
The class User does not exist
Linguagem 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 App
namespace à User
classe:
<?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 exist
Linguagem de código: PHP ( php )
O motivo é que a User
classe 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 exists
Linguagem 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 User
classe no User.php
arquivo da app
pasta da seguinte forma:
<?php
namespace App;
class User
{
public function avartar(): string
{
return 'default';
}
}
Linguagem de código: PHP ( php )
Segundo, crie um index.php
arquivo 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\User
classe existe e chama a spl_autoload_register()
função para carregar o User.php
arquivo da app
pasta.
Segundo, crie uma nova instância da classe App\User
e 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.