Maison >développement back-end >tutoriel php >Analyse détaillée du mécanisme de chargement automatique du framework thinkPHP5.0
Cet article présente principalement le framework thinkPHP5.0 chargement automatique et analyse plus en détail le concept, le principe, l'utilisation et les précautions du chargement automatique thinkPHP5.0 Friends. dans le besoin peuvent se référer à
Les exemples de cet article décrivent le mécanisme de chargement automatique du framework thinkPHP5.0. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Présentation
ThinkPHP5.0 réalise véritablement le chargement à la demande et toutes les bibliothèques de classes adopte un mécanisme de chargement automatique et prend en charge le mappage des bibliothèques de classes et le chargement automatique des bibliothèques de classes du compositeur.
L'implémentation du chargement automatique est complétée par la bibliothèque de classes thinkLoader, et la spécification de chargement automatique est conforme au PSR-4 de PHP.
Chargement automatique
Étant donné que la nouvelle version de ThinkPHP adopte entièrement la fonctionnalité de espace de noms, il vous suffit de définir correctement l'espace de noms où le La bibliothèque de classes est localisée. Si le chemin de l'espace de noms est cohérent avec le répertoire du fichier de bibliothèque de classes, alors le chargement automatique des classes peut être réalisé.
L'ordre de détection automatique du chargement des bibliothèques de classes est le suivant :
1. Détection automatique du chargement des bibliothèques de classes
2. -0 Détection de chargement automatique ;
Mappage de la bibliothèque de classes
Si vous suivez nos spécifications de définition d'espace de noms ci-dessus, le chargement automatique de la bibliothèque de classes peut essentiellement être terminé, mais si plus de noms sont définis S'il y a est moins d'espace, l'efficacité diminuera, nous pouvons donc définir des mappages de bibliothèques de classes pour les bibliothèques de classes couramment utilisées. Le mappage de bibliothèque de classes nommées équivaut à définir un alias pour le fichier de classe, ce qui est plus efficace que le positionnement de l'espace de noms, par exemple :Loader::addClassMap('think\Log',LIB_PATH.'think\Log.php'); Loader::addClassMap('org\util\Array',LIB_PATH.'org\util\Array.php');Vous pouvez également utiliser la méthode addClassMap pour importer les définitions de mappage de bibliothèque de classes par lots. , par exemple :
$map = [ 'think\Log' => LIB_PATH.'think\Log.php', 'org\util\array'=> LIB_PATH.'org\util\Array.php' ]; Loader::addClassMap($map);Bien que les classes enregistrées via le mappage de bibliothèques de classes ne doivent pas nécessairement correspondre aux répertoires d'espace de noms, il est toujours recommandé de suivre la spécification PSR-4 pour définir les bibliothèques de classes et les répertoires.
Importation de bibliothèque de classes
Si vous n'avez pas besoin de la fonction de chargement automatique du système, ou si vous n'utilisez pas d'espace de noms, vous pouvez également utiliser la méthode d'importation du Classe thinkLoader pour le charger manuellement Fichiers de bibliothèque de classes, par exemple :Loader::import('org.util.array'); Loader::import('@.util.upload');Exemple
// 引入 extends/qrcode.php Loader::import('qrcode', EXTEND_PATH); // 助手函数 import('qrcode', EXTEND_PATH); // 引入 extends/wechat-sdk/wechat.class.php Loader::import('wechat-sdk.wechat', EXTEND_PATH, '.class.php'); // 助手函数 import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');L'importation de bibliothèque de classes utilise également un concept d'espace de noms similaire (mais ne nécessite pas de prise en charge réelle de l'espace de noms) , l'espace de noms "racine" pris en charge comprend :
目录 | 说明 |
---|---|
behavior | 系统行为类库 |
think | 核心基类库 |
traits | 系统Traits类库 |
app | 应用类库 |
@ | 表示当前模块类库包 |
Si vous respectez pleinement la définition de l'espace de noms du système, d'une manière générale, il n'est pas nécessaire de charger manuellement le fichier de bibliothèque de classes et de simplement l'instancier directement.
Composer charge automatiquement
La version 5.0 prend en charge le chargement automatique des bibliothèques de classes installées par Composer. Vous pouvez les appeler directement en fonction de l'espace de noms dans la bibliothèque dépendante de Composer.
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!