Registers a callback PHP will call when resolving an undefined class or interface.
What It Does
Composer PSR-4 autoloading supplies a project-level class map Do not interpolate unchecked class names into arbitrary paths; validate a namespace prefix and use require only for existing files.
Requirements and Compatibility
Available in the PHP runtime; use PHP 8 or later for the shown typed, modern examples.
Syntax, Inputs and Results
The arguments shown below are concrete values for this function; their types and ranges matter. The example checks return data rather than assuming that every operation succeeds.
Example 1: Basic Use
Demonstrates the primary behavior.
<?php
spl_autoload_register(static function (string $class): void {
if (!str_starts_with($class, 'App\\')) return;
$relative = substr($class, 4);
$file = __DIR__ . '/src/' . str_replace('\\', '/', $relative) . '.php';
if (is_file($file)) require $file;
});
Example 2: Another Case
Handles an alternative input or use case.
<?php
$loader = static function (string $name): void { echo "Resolve: {$name}\n"; };
spl_autoload_register($loader);
class_exists('UnloadedClass');
spl_autoload_unregister($loader);
Practical Example
Puts the function into a larger practical task.
<?php
$first = static function (string $class): void {};
$second = static function (string $class): void {};
spl_autoload_register($first);
spl_autoload_register($second, true, true);
echo count(spl_autoload_functions()), " loaders\n";
spl_autoload_unregister($first);
spl_autoload_unregister($second);
For production, apply the compatibility and edge-case limits described below.
Important Behavior and Edge Cases
Do not interpolate unchecked class names into arbitrary paths; validate a namespace prefix and use require only for existing files.
Comparison with Related Functions and Tools
| Subject | Key difference |
|---|---|
| spl_autoload_register() | Composer PSR-4 autoloading supplies a project-level class map |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Calling spl_autoload_register() without its required input or supported extension | Check the extension, supply valid arguments, and handle false or exceptions according to the function. |
| Assuming spl_autoload_register() guarantees a valid or safe image | Inspect the return and avoid exposing debug output to website visitors. |
| Confusing the operation with a related API | Composer PSR-4 autoloading supplies a project-level class map |
Key Takeaways
- Registers a callback PHP will call when resolving an undefined class or interface.
- Do not interpolate unchecked class names into arbitrary paths; validate a namespace prefix and use require only for existing files.
- Choose the companion API described in the comparison table when the job differs.
Use these examples as a starting point, then validate the result with the actual PHP build, dependencies and inputs used by your application.