spl_autoload_register register namespace instead funciona ejemplos como clases autocarga __autoload php autoload camelcasing

php - namespace - spl_autoload_register ejemplos



Convertir CamelCase a under_score_case en php__autoload() (2)

Esto no se ha probado, pero he usado algo similar antes para convertir el nombre de la clase. Podría agregar que mi función también se ejecuta en O (n) y no se basa en una referencia lenta.

// lowercase first letter $class_name[0] = strtolower($class_name[0]); $len = strlen($class_name); for ($i = 0; $i < $len; ++$i) { // see if we have an uppercase character and replace if (ord($class_name[$i]) > 64 && ord($class_name[$i]) < 91) { $class_name[$i] = ''_'' . strtolower($class_name[$i]); // increase length of class and position ++$len; ++$i; } } return $class_name;

Manual de PHP suggests autocargar clases como

function __autoload($class_name){ require_once("some_dir/".$class_name.".php"); }

y este enfoque funciona bien para cargar la clase FooClass guardada en el archivo my_dir/FooClass.php like

class FooClass{ //some implementation }

Pregunta

¿Cómo puedo hacer posible usar la función _autoload() y acceder a FooClass guardada en el archivo my_dir/foo_class.php ?


Podrías convertir el nombre de clase como este ...

function __autoload($class_name){ $name = strtolower(preg_replace(''/([a-z])([A-Z])/'', ''$1_$2'', $class_name)); require_once("some_dir/".$name.".php"); }