我在目录中具有以下类:
database
- config
- DB_Config.php
- ops
- DB_Ops_User.php
- DB_Ops_Communication.php
- etc
我编写了一个函数来在目录中注册所有类:
private static function registerDirectories(array $directories)
{
// If $directories is not null and not an array, it is an unexpected type.
if(!is_array($directories)){
if(!is_null){
throw new InvalidArgumentException('$directories must be an array');
}
throw new InvalidArgumentException('$directories must be defined');
}
if(empty($directories)){
throw new InvalidArgumentException('$directories must have at least one value');
}
$autoloadFunc = function($class) use ($directories)
{
foreach($directories as $directory)
{
$file = $class.'.php';
if(file_exists($file))
{
require $file;
return true;
}
}
return false;
};
spl_autoload_register($autoloadFunc);
}
registerDirectories(['database/config', 'database/ops']);
但是,我总是收到未找到类DB.php
的错误。我读过它试图将下划线转换为名称空间目录。您应该如何解决呢?我不想将类名中的每个下划线都放在一个目录中,以提高可读性。