PHP class_exists
Summary: in this tutorial, you’ll learn how to use the PHP class_exists() function to check if a class exists or not.
Introduction to the PHP class_exists() function
The class_exists() function accepts a class name and returns true if the class exists or false otherwise.
class_exists(string $class, bool $autoload = true): boolCode language: PHP (php)
The class_exists() function has two parameters:
$classspecifies the name of the class to check.$autoloaddetermines whether to callspl_autoload_register()by default.
Note that the class_exists() is case-insensitive. It means that if you have a class with the name User, the class_exists(‘user’) will return true.
The class_exists() function is often used in model-view-controller (MVC) frameworks to load the controller class based on a route.
PHP class_exists() function examples
Let’s take some examples of using the class_exists() function.
1) Using the PHP class_exists() function to check if a class exists
First, define a class User in the User.php file:
class User
{
}
Code language: PHP (php)
Second, require the User.php file in the index.php and use the class_exists() function to check if the User class exists:
require 'User.php';
if (class_exists('User')) {
echo 'The class User exists';
} else {
echo 'The class User does not exist';
}
Code language: PHP (php)
Since the require construct loads the User.php class, you’ll see the following output:
The class User existsCode language: PHP (php)
If you comment the require statement and execute the script again, you’ll see the following output:
The class User does not existCode language: PHP (php)
2) Using the PHP class_exists() function to check if a namedspaced clas exists
First, add the App namespace to the User class:
namespace App;
class User
{
}
Code language: PHP (php)
Second, execute the following script:
require 'User.php';
if (class_exists('User')) {
echo 'The class User exists';
} else {
echo 'The class User does not exist';
}
Code language: PHP (php)
… you’ll see the following output:
The class User does not existCode language: PHP (php)
The reason is that the User class is namespaced. The class name is App\User, not User.
To fix this, you can use the fully-qualified class name like this:
require 'User.php';
if (class_exists('App\User')) {
echo 'The class App\User exists';
} else {
echo 'The class Appp\User does not exist';
}
Code language: PHP (php)
If you execute the script again, you’ll see this output:
The class App\User existsCode language: PHP (php)
3) Using the class_exists() with the class alias
The class_exists() doesn’t work with the aliased class name. For example:
require 'User.php';
use App\User as Account;
var_dump(class_exists('Account')); // bool(false) Code language: PHP (php)
4) Using the PHP class_exists() with spl_autoload_register() example
First, define the User class in the User.php file in the app folder as follows:
namespace App;
class User
{
public function avartar(): string
{
return 'default';
}
}
Code language: PHP (php)
Second, create an index.php file in the root folder and place the following code:
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();
Code language: PHP (php)
Output:
Loading the class App\User
Create a new user
default{"mode":"full","isActive":false}Code language: PHP (php)
How it works.
First, the class_exists() function checks whether the App\User class exists and call the spl_autoload_register() function to load the User.php file from the app folder.
Second, create a new instance of the class App\User and call the avartar() method.
Summary
- Use the PHP
class_exists()function to check if a class exists or not. - Use the fully-qualified name for the class if the class is namespaced.