php - namespace - spl_autoload_register function
mĂșltiples spl_autoload_register (2)
¿Cuáles son los beneficios de tener múltiples spl_autoload_register
ejemplo:
spl_autoload_register(''autoload_systems'');
spl_autoload_register(''autoload_thirdparties'');
spl_autoload_register(''autoload_services'');
vs:
usando uno
spl_autoload_register(''autoload'');
o __autoload();
y luego hacer la lógica dentro de la función.
eg:
$ftp = new systems_ftp();
$services = new services_cron_email();
Si tiene un __autoload()
e incluye una biblioteca de terceros que también tiene uno, se eliminará.
El registro de varias spl_autoload_register()
automáticas con spl_autoload_register()
garantiza que su código se pueda spl_autoload_register()
con el código existente (piense en las bibliotecas, etc.) sin obstruir ni spl_autoload_register()
automáticas existentes / futuras.
Además, el manual de PHP indica ...
spl_autoload_register()
proporciona una alternativa más flexible para las clases de carga automática. Por esta razón, se desaconseja el uso de__autoload()
y se puede dejar de utilizar o eliminar en el futuro.
Supongo que no es necesario agregar múltiples, pero está en su lógica. la forma en que funciona spl_autoload_register es impresionante. Supone que uno tiene directivas de terceros y que generalmente se administra a través del espacio de nombres que también representa su ruta. Considera esta clase simple como clase autoloader
clase MyAutoLoader {
public function __construct() { spl_autoload_register( array($this, ''load'') ); } function load( $class ) { $filepath = ''classes/''.$class.''.php''; require_once( $filepath); }
}
Luego, en el archivo de índice, incluya este archivo de carga y cree una instancia de esta clase.
$autoload = new MyAutoLoader();
ahora u puede crear directamente las instancias de las clases, supongamos que tenemos la clase ''Person'' en el directorio ''classes / QMS / SERVICES / Person.php'' y la misma ruta es el espacio de nombres de esa clase
$ person = new QMS / SERVICES / Person ();
ahora, cuando use nuevo, comprobará si esta clase existe y el valor como cadena se pasará a la función ''cargar'' de la clase ''MyAutoLoader''. y allí se incluirá. o u puede cambiar la función ''cargar'' para arreglar la ruta de acceso de los archivos de clase ur, si las condiciones o lo que sea necesario para corregir las rutas ...