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;
unserializeunserialize_callback_funcspl_autoload_registerspl_autoload__autoload