


Explication détaillée d'exemples de mécanisme de chargement automatique de classe PHP
Mécanisme de chargement automatique de classede PHP Une classe utilise généralement les méthodes include et require pour inclure le fichier qui définit la classe. Lorsque cela est développé à petite échelle, il n’y a pas de gros problème. Cependant, dans les projets de développement à grande échelle, cela générera un grand nombre d'appels de méthode require ou include, ce qui non seulement réduit l'efficacité, mais rend également le code difficile à maintenir. De plus,
require_once est très coûteux. .
Avant PHP5, si chaque framework PHP voulait implémenter le chargement automatique de classes, il implémentait généralement un parcours de répertoires
selon un certain accord, et automatiquement Une classe ou une fonction qui charge tous les fichiers qui correspondent aux règles convenues. Bien entendu, le support orienté objet avant PHP5 n'était pas très bon et l'utilisation de classes n'était pas aussi fréquente qu'aujourd'hui. Après PHP5, lors du chargement d'une classe PHP, si le fichier où se trouve la classe n'est pas inclus, ou si le nom de la classe est erroné, le moteur Zend appellera automatiquement la fonction de chargement automatique. Cette fonction nécessite que les utilisateurs implémentent eux-mêmes la fonction de chargement automatique. Après PHP5.1.2, vous pouvez utiliser la fonction spl_autoload_register pour personnaliser la fonction de traitement de chargement automatique. Lorsque cette fonction n'est pas appelée, la fonction spl_autoload personnalisée de SPL sera utilisée par défaut.1. Exemple de chargement automatique : Le code ci-dessus affichera à la fin : classe de chargement automatique : Démo.
Et après cela, une erreur est signalée : Erreur fatale : Classe 'Demo' introuvableNous utilisons généralement _autoloadfunction autoload($class_name) { echo 'autload class:', $class_name, '<br />'; } new Demo();
comme suit :
Nous pouvons voir que _autoload doit faire au moins trois choses. La première chose est de déterminer le nom du fichier de classe en fonction du nom de la classe. La deuxième chose est de déterminer le chemin du disque où se trouve le fichier de classe (dans notre fichier. exemple, dans le cas le plus simple, la classe Dans le même dossier que les fichiers du programme PHP qui les appellent), la troisième chose est de charger les classes dans le système à partir du fichier disque. La troisième étape est la plus simple, utilisez simplement include/require. Pour réaliser les fonctions des première et deuxième étapes, la méthode de mappage entre le nom de classe et le fichier disque doit être convenue lors du développement. Ce n'est qu'ainsi que nous pourrons trouver son fichier disque correspondant en fonction du nom de classe. Par conséquent, lorsqu'il y a un grand nombre de fichiers de classe à inclure, il suffit de déterminer les règles correspondantes, puis dans la fonction autoload(), de faire correspondre le nom de la classe avec le fichier disque réel pour obtenir effet de chargement paresseux. De là, nous pouvons également voir que la chose la plus importante dans l'implémentation de la fonction autoload() est l'implémentation des règles de mappage entre le nom de la classe et le fichier disque réel.
<?php function autoload($class_name) { require_once ($class_name . “class.php”); } $memo= new Demo();
a introduit la bibliothèque standard SPL en PHP5,
une nouvelle solution, la fonction spl_autoload_register().2. Fonction spl_autoload_register() La fonction de cette fonction est d'enregistrer la fonction dans la pile de fonctions de chargement automatique SPL et de supprimer le chargement automatique par défaut du système ( )fonction. Cela peut être vu dans l'exemple suivant :
function autoload($class_name) { echo 'autload class:', $class_name, '<br />'; } function classLoader($class_name) { echo 'SPL load class:', $class_name, '<br />'; } spl_autoload_register('classLoader'); new Test();//结果:SPL load class:Test
语法:bool spl_autoload_register ( [callback $autoload_function] ) 接受两个参数:一个是添加到自动加载栈的函数,另外一个是加载器不能找到这个类时是否抛出异常的标志。第一个参数是可选的,并且默认指向spl_autoload()函数,这个函数会自动在路径中查找具有小写类名和.php扩展或者.ini扩展名,或者任何注册到spl_autoload_extensions()函数中的其它扩展名的文件。
<?php class CalssLoader { public static function loader($classname) { $class_file = strtolower($classname).".php"; if (file_exists($class_file)){ require_once($class_file); } } } // 方法为静态方法 spl_autoload_register('CalssLoader::loader'); $test = new Test();
一旦调用spl_autoload_register()函数,当调用未定义类时,系统会按顺序调用注册到spl_autoload_register()函数的所有函数,而不是自动调用autoload()函数。如果要避免这种情况,需采用一种更加安全的spl_autoload_register()函数的初始化调用方法:
if(false === spl_autoload_functions()){ if(function_exists('autoload')){ spl_autoload_registe('autoload',false); } }
spl_autoload_functions()函数会返回已注册函数的一个数组,如果SPL自动加载栈还没有被初始化,它会返回布尔值false。然后,检查是否有一个名为autoload()的函数存在,如果存在,可以将它注册为自动加载栈中的第一个函数,从而保留它的功能。之后,可以继续注册自动加载函数。
还可以调用spl_autoload_register()函数以注册一个回调函数,而不是为函数提供一个字符串名称。如提供一个如array('class','method')这样的数组,使得可以使用某个对象的方法。
下一步,通过调用spl_autoload_call('className')函数,可以手动调用加载器,而不用尝试去使用那个类。这个函数可以和函数class_exists('className',false)组合在一起使用以尝试去加载一个类,并且在所有的自动加载器都不能找到那个类的情况下失败。
f(spl_autoload_call('className') && class_exists('className',false)){ } else { }
SPL自动加载功能是由spl_autoload() ,spl_autoload_register(), spl_autoload_functions() ,spl_autoload_extensions()和spl_autoload_call()函数提供的。
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
