Autoloading Classes

Many developers writing object-oriented applications create one PHP source file per class definition. One of the biggest annoyances is having to write a long list of needed includes at the beginning of each script (one for each class).

The spl_autoload_register() function registers any number of autoloaders, enabling for classes and interfaces to be automatically loaded if they are currently not defined. By registering autoloaders, PHP is given a last chance to load the class or interface before it fails with an error.

Any class-like construct may be autoloaded the same way. That includes classes, interfaces, traits, and enumerations.


Prior to PHP 8.0.0, it was possible to use __autoload() to autoload classes and interfaces. However, it is a less flexible alternative to spl_autoload_register() and __autoload() is deprecated as of PHP 7.2.0, and removed as of PHP 8.0.0.


spl_autoload_register() may be called multiple times in order to register multiple autoloaders. Throwing an exception from an autoload function, however, will interrupt that process and not allow further autoload functions to run. For that reason, throwing exceptions from an autoload function is strongly discouraged.

Example #1 Autoload example

This example attempts to load the classes MyClass1 and MyClass2 from the files MyClass1.php and MyClass2.php respectively.

(function ($class_name) {
$class_name '.php';

$obj  = new MyClass1();
$obj2 = new MyClass2(); 

Example #2 Autoload other example

This example attempts to load the interface ITest.


(function ($name) {

Foo implements ITest {

string(5) "ITest"

Fatal error: Interface 'ITest' not found in ...

Here you can write a comment

Please enter at least 10 characters.
Loading... Please wait.
* Pflichtangabe
There are no comments available yet.

PHPUnit version 10 released

Version 10 of the popular test framework PHPUnit has been released and is available for download. ...


Autor : TheMax
Category: Software & Web-Development

Laravel 10 published

Laravel version 10 is available for download with a minimum requirement of PHP 8.1. ...


Autor : admin
Category: Software & Web-Development

DeepL Extension Write published as beta

DeepL has released a new service called "write" that aims to improve spelling and grammar with AI. ...


Autor : admin
Category: Miscellaneous

Publish a tutorial

Share your knowledge with other developers worldwide

Share your knowledge with other developers worldwide

You are a professional in your field and want to share your knowledge, then sign up now and share it with our PHP community

learn more

Publish a tutorial