PHP类的自动加载

<?php
namespace Manager;

/**
 * Class autoLoad
 * @param $classMap
 * @package Manager
 */
class autoLoad{

    /**
     * save the file path of class
     * @var array
     */
    public static $classMap = array();

    /**
     * include class
     * @param  $className
     * if the param is a string , it must be a namespace path
     * @author pig 2015-09-22
     */
    public static function loadClass($className){

        if(isset(self::$classMap[$className])){
            include self::$classMap[$className];
        }else{
            $className and $filePath = str_replace('\\','/',$className).'.php';
            if(!file_exists($filePath)){
                exit("file:$filePath is not exist");
            }
            self::$classMap[$className] = $filePath;
            include $filePath;
        }
        $result = class_exists($className,false) || interface_exists($className,false);
        if(!$result){
            exit("class:$className is not exist");
        }

    }

    /**
     * auto load register function
     * @author pig 2015-09-22
     */
    public static function run(){
         spl_autoload_register(__NAMESPACE__ .'\autoLoad::loadClass');
    }
}

如何使用?

<?php
use Manager\BlogManager;

include 'Manager/autoLoad.php';
autoLoad::run();
BlogManager::factory()->encode(); //这时就可以自动把BlogManager类自动包含进来


你可能感兴趣的:(PHP类的自动加载)