<?php

/**
 *
 * 自动载入函数
 */
class Autoloader
{
    /**
     * 向PHP注册在自动载入函数
     */
    public static function register()
    {
        spl_autoload_register(array(new self, 'autoload'));
    }

    /**
     * 根据类名载入所在文件
     */
    public static function autoload($className)
    {
        // 获取 autoloader.php 所在的目录
        $autoloaderDir = dirname(__FILE__);
        
        // 将命名空间转换为文件路径
        $filePath = $autoloaderDir . DIRECTORY_SEPARATOR . str_replace('\\', DIRECTORY_SEPARATOR, $className) . '.php';
        
        if (file_exists($filePath)) {
            require_once $filePath;
            return;
        }
        
        // 如果找不到，尝试在 lib 目录下查找
        $libPath = $autoloaderDir . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . basename(str_replace('\\', DIRECTORY_SEPARATOR, $className)) . '.php';
        if (file_exists($libPath)) {
            require_once $libPath;
            return;
        }
        
        // 如果还找不到，尝试在上级目录的 lib 下查找
        $parentLibPath = dirname($autoloaderDir) . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . basename(str_replace('\\', DIRECTORY_SEPARATOR, $className)) . '.php';
        if (file_exists($parentLibPath)) {
            require_once $parentLibPath;
            return;
        }
    }
}