web-dev-qa-db-fra.com

Qu'est-ce que le chargement automatique en php?

qu'est-ce que le chargement automatique en PHP?

39
DEVOPS

Cela vous sera utile au sujet de l'utilisation du chargement automatique. http://ditio.net/2008/11/13/php-autoload-best-practices/

C'est une fonction magique qui vous aide à inclure/exiger des fichiers en utilisant le nom de classe.

function __autoload($class_name) 
{
    require_once $DOCUMENT_ROOT . “/classes/” . $class_name .“.php”;
}

Il est déconseillé à PHP 7.2.0 et spl_autoload_register est recommandé à cet effet.

30
osm

Voici la documentation officielle: http://php.net/autoload

En bref, il vous permet simplement de définir des chemins de recherche pour les classes afin que vous ne soyez pas obligé d'inclure les fichiers les contenant manuellement.

Je vous suggère de développer une habitude de recherche sur php.net en ajoutant simplement des noms de fonction ou des mots clés évidents à l'adresse. C'est ainsi que j'ai trouvé php.net/autoload. C'est assez pratique comme ça.

29
slikts

Qu'est-ce que le chargement automatique?

Chaque fois que vous souhaitez utiliser une nouvelle classe dans votre PHP, vous devez d'abord inclure cette classe (en utilisant la construction de langage include ou require, c'est vrai que ce ne sont pas des fonctions). Cependant, si vous avez Fonction __autoload définie, l'inclusion se gèrera d'elle-même.

include "classes/class.Foo.php";

$foo = new Foo;
$foo->start();
$foo->stop();

Exemple de base de chargement automatique

function __autoload($class_name) 
{
    require_once $DOCUMENT_ROOT.“classes/class.”.$class_name.“.php”;
}

$foo = new Foo;
$foo->start();
$foo->stop();

PHP officiel

Autre

Mise à jour

PHP 5 a introduit la fonction magique __autoload () qui est automatiquement appelée lorsque votre code fait référence à une classe ou une interface qui n'a pas encore été chargée.

L'inconvénient majeur de la fonction __autoload() est que vous ne pouvez en fournir qu'un seul chargeur automatique. PHP 5.1.2 a introduit spl_autoload() qui vous permet d'enregistrer plusieurs fonctions de chargeur automatique, et à l'avenir la fonction __autoload() sera obsolète.

L'introduction de spl_autoload_register() a donné aux programmeurs la possibilité de créer une chaîne de chargement automatique, 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");
27
Muhammad Shahzad
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';
}
1
kumardippu