Maison >développement back-end >tutoriel php >Explication détaillée du chargement automatique des fichiers PHP
Cette fois je vous apporte une explication détaillée de l'utilisation du fichier PHP chargement automatique , quelles sont les précautions lors de l'utilisation du chargement automatique de fichier PHP, ce qui suit est un cas pratique, jetons un coup d'oeil.
Traditionnellement, en PHP, lorsqu'on veut utiliser un fichier de classe, on doit l'exiger ou l'inclure en tête du document :
<?php require_once('../includes/functions.php'); require_once('../includes/database.php'); require_once('../includes/user.php'); ...
Mais une fois qu'on veut appeler If il y a trop de documents, vous devez écrire une ligne à la fois, ce qui n'a pas l'air bien. Existe-t-il un moyen de charger automatiquement les documents PHP ?
<?php function autoload($class_name) { require "./{$class_name}.php"; }
Oui, vous pouvez utiliser la fonction magique autoload() de PHP. L'exemple ci-dessus consiste à charger automatiquement le fichier PHP dans le répertoire courant. Bien sûr, dans la pratique, nous sommes plus susceptibles de l'utiliser comme ceci :
<?php function autoload($class_name) { $name = strtolower($class_name); $path = "../includes/{$name}.php"; if(file_exists($path)){ require_once($path); }else{ die("the file {$class_name} could not be found"); } }
, c'est-à-dire que nous effectuons un certain traitement de cas du nom de fichier, puis vérifions si le fichier existe avant de l'exiger. S'il n'existe pas, l'affichage personnalisé affichera les informations.
Un usage similaire est souvent observé dans des projets privés, ou dans le cadre d'un seul projet. Pourquoi ? Étant donné que vous ne pouvez définir qu'une seule fonction de chargement automatique, dans le développement multi-personnes, il est impossible pour différents développeurs d'utiliser différents chargeurs automatiques personnalisés, à moins que tout le monde n'accepte à l'avance d'utiliser un seul chargement automatique et de synchroniser les versions lorsque des modifications sont impliquées, ce qui est très gênant. .
Principalement à cause de cela, la bonne nouvelle est que cette fonction de chargement automatique sera bientôt obsolète dans la version 7.2 de PHP.
Attention Cette fonctionnalité est obsolète depuis PHP 7.2.0. Il est fortement déconseillé de s'appuyer sur cette fonctionnalité.
Ensuite, elle est remplacée par quelque chose appelé spl_autoload_register(), qui a l'avantage d'être personnalisable. Plusieurs chargeurs automatiques. .
//使用匿名函数来autoload spl_autoload_register(function($class_name){ require_once('...'); });
//使用一个全局函数 function Custom() { require_once('...'); } spl_autoload_register('Custom');
//使用一个class当中的static方法 class MyCustomAutoloader { static public function myLoader($class_name) { require_once('...'); } } //传array进来,第一个是class名,第二个是方法名 spl_autoload_register(['MyCustomAutoloader','myLoader']);
//甚至也可以用在实例化的object上 class MyCustomAutoloader { public function myLoader($class_name) { } } $object = new MyCustomAutoloader; spl_autoload_register([$object,'myLoader']);
Il convient de mentionner que l'utilisation du chargement automatique, que ce soit autoload() ou spl_autoload_register(), présente des avantages par rapport à require ou include. Autrement dit, le mécanisme de chargement automatique est paresseux chargement, c'est-à-dire qu'il n'appelle pas tous les fichiers pour vous dès que vous l'exécutez, mais seuls ceux que vous utilisez, comme les nouveaux fichiers, seront chargés via le mécanisme de chargement automatique.
Bien sûr, spl_autoload_register est souvent utilisé dans Laravel, y compris divers packages, comme ici :
/** * Prepend the load method to the auto-loader stack. * * @return void */ protected function prependToLoaderStack() { spl_autoload_register([$this, 'load'], true, true); }
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article Pour plus de passionnant. Pour plus d'informations, veuillez faire attention au site Web chinois php Autres articles connexes !
Lecture recommandée :
Comment supprimer des fichiers dans un répertoire utilisant PHP unlink et rmdir Réaliser
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!