spl_autoload_register namespace instead ejemplo clases autocarga php autoload spl

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 ...