Example #1
0
    /**
     * Internal autoloader for spl_autoload_register().
     *
     * @param string $class
     */
    public static function autoload($class)
    {
        // Don't interfere with other autoloaders
        if (0 !== strpos($class, 'Xxx_')) {#以Xxx开头的类 才往下执行,否则返回
            return;
        }
		#./Xxx/abc/a.php
        $path = dirname(__FILE__).'/'.str_replace('_', '/', $class).'.php';#把类名中 _替换成目录

        if (!file_exists($path)) {
            return;
        }

        require $path;#加载文件

        if (self::$inits && !self::$initialized) {
            self::$initialized = true;#只回调一次
            foreach (self::$inits as $init) {
                call_user_func($init);#执行方法
            }
        }
    }
Example #2
0
<?php
if (class_exists('Xxx', false)) {#类存在则不执行以后的代码,否则执行。且类不存在时是不触发自动加载器的
	#避免了类不重复定义的错误
    return;
}

//加载类
require dirname(__FILE__).'/classes/Xxx.php';

if (!function_exists('_Xxxmailer_init')) {#方法不存在则定义方法
    function _Xxxmailer_init()
    {
        require dirname(__FILE__).'/Xxx_init.php';
    }
}

//注册自动加载器
Xxx::registerAutoload('_Xxxmailer_init');