Qu'est-ce que autoload en php? [dupliquer]
5 réponses
cela vous aidera sur l'utilisation de autoload. http://ditio.net/2008/11/13/php-autoload-best-practices/
Voici la documentation officielle: http://php.net/autoload
en bref, il vous permet juste de définir des chemins de recherche pour les classes de sorte que vous ne seriez pas obligé d'inclure les fichiers contenant eux manuellement.
je suggère que vous développiez l'habitude de chercher php.net en ajoutant simplement des noms de fonction ou des mots-clés évidents à l'adresse. Voilà comment j'ai trouvé php.net/autoload. C'est assez pratique comme ça.
Qu'est-ce que l'autoloading?
chaque fois que vous voulez utiliser une nouvelle classe dans votre projet PHP, vous devez d'abord inclure cette classe (en utilisant include ou require language construct, c'est vrai que ce ne sont pas des fonctions). Cependant, si vous avez défini la fonction __autoload, l'inclusion se gérera elle-même.
include "classes/class.Foo.php";
$foo = new Foo;
$foo->start();
$foo->stop();
Exemple D'Autoloading De Base
function __autoload($class_name)
{
require_once $DOCUMENT_ROOT.“classes/class.”.$class_name.“.php”;
}
$foo = new Foo;
$foo->start();
$foo->stop();
mise à Jour
PHP 5 introduit la fonction magique _ _ autoload () qui est automatiquement appelée lorsque votre code renvoie une classe ou une interface qui n'a pas encore été chargée.
le principal inconvénient de la fonction __autoload()
est que vous ne pouvez fournir qu'un seul autoloader avec elle. PHP 5.1.2 introduit spl_autoload()
qui vous permet d'enregistrer plusieurs les fonctions d'autoloader, et dans le futur la fonction __autoload()
sera dépréciée.
l'introduction de spl_autoload_register()
a donné aux programmeurs la possibilité de créer une chaîne autoload, une série de fonctions qui peuvent être appelées pour essayer de charger une classe ou une interface. Par exemple:
<?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';
}
Autoloader est une fonction qui charge tout l'objet sur le démarrage. et aussi appelé le nom de la classe.