<? php / ** * Cargar automáticamente archivos de clase * autor: zbseoag * QQ: 617937424 * * // Carga automáticamente las clases cuyo nombre de clase comienza con 'Modelo', carga: ./lib/Model/*.class.php file Carga automática :: home ('./ lib /') -> match ('\ Model') -> suffix ('class.php') -> register () $ usuario = nuevo \ Modelo \ Usuario (); echo Autoload :: $ archivo; // Ruta del archivo de prueba echo Autoload :: home (__ DIR __) -> make ('Mysql'); // Regístrese y cargue una prueba manualmente Carga automática :: home (__ DIR __) -> register () -> load ('Mysql'); * * * / carga automática de clase { public static $ init; public $ suffix = 'php'; public $ home = './'; public static $ file = ''; public $ match = ''; función privada __construct ($ home = '') { // Eliminar las barras en ambos lados de la casa: Modelo \ Usuario $ this-> home = trim ($ home, '\\ /'); } / ** * Directorio raíz de archivos * @param $ value * @return $ this * / función pública estática home ($ value = '') { if (! self :: $ init) self :: $ init = nueva estática ($ valor); return self :: $ init; } / ** * Espacio de nombres del partido * @param $ value * @return $ this * / coincidencia de función pública (valor de $) { $ this-> match = trim ($ value, '\\ /'); devuelve $ this; } / ** * Sufijo de archivo de nombre de clase, como 'class.php' * @param $ value * @return $ this * / sufijo de función pública (valor de $) { $ this-> suffix = ltrim ($ value, '.'); devuelve $ this; } registro de función pública () { spl_autoload_register (función ($ clase) { $ this-> load ($ clase); }); devuelve $ this; } / ** * Generar ruta de archivo * @param $ class * @cadena de retorno * / función pública make ($ class) { // Elimina las barras en ambos lados de la clase: Modelo \ Usuario $ clase = trim ($ clase, '\\'); self :: $ file = ''; if (vacío ($ this-> match) || strpos ($ class, $ this-> match) === 0) { self :: $ file = strtr ($ this-> home. '/'. $ class, '\\', '/'). '.' . $ this-> sufijo; } devuelve $ this; } / ** * Carga manual * @param $ class * / carga de función pública ($ class = '') { if (! empty ($ class)) $ this-> make ($ class); if (self :: $ file) requiere self :: $ file; devuelve $ this; } / ** * Crear objetos dinámicamente * @param $ class * @param $ argumentos * @ objeto de devolución * @throws ReflectionException * / función pública estática create ($ class, $ argumentos) { $ clase = nuevo \ ReflectionClass ($ clase); return $ class-> newInstanceArgs ($ argumentos); } funciones de funciones públicas () { return spl_autoload_functions (); } }