spl_autoload_register psr namespace funciona composer como __autoload php autoload

psr - ¿Qué es autoload en php?



namespace php (5)

¿Qué es autoload en PHP?


Aquí está la documentación oficial: http://php.net/autoload

En resumen, solo le permite definir rutas de búsqueda para las clases, por lo que no será necesario que incluya los archivos que las contienen manualmente.

Le sugiero que desarrolle el hábito de buscar en php.net simplemente agregando nombres de funciones o palabras clave obvias a la dirección. Así es como encontré php.net/autoload. Es bastante conveniente así.



El autocargador es una función que carga todo el objeto en el arranque. y también llamado el nombre de clase.


¿Qué es la carga automática?

Cada vez que quiera usar una nueva clase en su proyecto de PHP, primero debe incluir esta clase (usando la construcción de incluir o requerir lenguaje, es correcto, no son funciones). Sin embargo, si tiene definida la función __autoload, la inclusión se manejará sola.

include "classes/class.Foo.php"; $foo = new Foo; $foo->start(); $foo->stop();

Ejemplo básico de carga automática

function __autoload($class_name) { require_once $DOCUMENT_ROOT.“classes/class.”.$class_name.“.php”; } $foo = new Foo; $foo->start(); $foo->stop();

PHP oficial

http://ditio.net/2008/11/13/php-autoload-best-practices/

Actualizar

PHP 5 introdujo la función mágica __autoload () a la que se llama automáticamente cuando su código hace referencia a una clase o interfaz que aún no se ha cargado.

El principal inconveniente de la __autoload() es que solo se puede proporcionar un autoloader. PHP 5.1.2 introdujo spl_autoload() que le permite registrar múltiples funciones de autocargador, y en el futuro la __autoload() quedará en desuso.

La introducción de spl_autoload_register() dio a los programadores la capacidad de crear una cadena de carga automática, una serie de funciones que se pueden llamar para intentar cargar una clase o interfaz. Por ejemplo:

<?php function autoloadModel($className) { $filename = "models/" . $className . ".php"; if (is_readable($filename)) { require $filename; } } function autoloadController($className) { $filename = "controllers/" . $className . ".php"; if (is_readable($filename)) { require $filename; } } spl_autoload_register("autoloadModel"); spl_autoload_register("autoloadController");


an __autoload() //function which is automatically called in case you are trying to use //a class/interface which hasn''t been defined yet. function __autoload($class_name) { include $class_name . ''.php''; }