What is the best practice for autoloading classes in PHP, especially when classes are located in different folders?
When classes are located in different folders in PHP, the best practice for autoloading classes is to use a PSR-4 autoloader. This allows you to map namespaces to directory structures, making it easy to autoload classes from different folders without having to manually include each file.
<?php
// Autoloader using PSR-4 standard
spl_autoload_register(function ($class) {
// project-specific namespace prefix
$prefix = 'Your\\Namespace\\Prefix\\';
// base directory for the namespace prefix
$base_dir = __DIR__ . '/src/';
// does the class use the namespace prefix?
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
// no, move to the next registered autoloader
return;
}
// get the relative class name
$relative_class = substr($class, $len);
// replace the namespace prefix with the base directory, replace namespace separators with directory separators
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
// if the file exists, require it
if (file_exists($file)) {
require $file;
}
});