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. Although the __autoload function can also be used for autoloading classes and interfaces, it's preferred to use the spl_autoload_register function. This is because it is a more flexible alternative (enabling for any number of autoloaders to be specified in the application, such as in third party libraries). For this reason, using __autoload is discouraged and deprecated as of PHP 7.2.0. Autoloading is not available if using PHP in CLI interactive mode. If the class name is used e.g. in call_user_func then it can contain some dangerous characters such as ../. It is recommended to not use the user-input in such functions or at least verify the input in __autoload. Autoload example This example attempts to load the classes MyClass1 and MyClass2 from the files MyClass1.php and MyClass2.php respectively. ]]> Autoload other example This example attempts to load the interface ITest. ]]> Autoloading with exception handling This example throws an exception and demonstrates the try/catch block. getMessage(), "\n"; } ?> ]]> &example.outputs; Autoloading with exception handling - Missing custom exception This example throws an exception for a non-loadable, custom exception. getMessage(), "\n"; } ?> ]]> &example.outputs; &reftitle.seealso; unserialize unserialize_callback_func spl_autoload_register spl_autoload __autoload