Wie kann man mit Namespaces und Autoloadern in PHP eine logische Verzeichnisstruktur für Klassen erstellen?
To create a logical directory structure for classes in PHP using namespaces and autoloaders, you can organize your classes into directories that reflect their namespaces. Then, you can use an autoloader function to dynamically load the classes based on their namespace and class name.
spl_autoload_register(function($class) {
// project-specific namespace prefix
$prefix = 'MyNamespace\\';
// 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;
}
});