


1. Qu'est-ce que la réflexion ?
Il s'agit d'étendre l'analyse des programmes PHP dans l'état d'exécution de PHP, d'exporter ou d'extraire des informations détaillées sur les classes, les méthodes, les propriétés, les paramètres, etc., y compris Commentez . Cette fonction d'obtention dynamique d'informations et d'appel dynamique de méthodes d'objets est appelée API de réflexion.
Reflection est une API permettant de manipuler des méta-modèles dans le paradigme Orienté objet . Elle est très puissante et peut nous aider à créer des applications complexes et évolutives.
2. Les utilisations de la réflexion
Ses utilisations incluent : Le chargement automatique des plug-ins, la génération automatique de documents, et peut même être utilisé pour étendre le langage PHP.
3. Exemples d'application spécifiques de la réflexion - prendre un exemple d'implémentation du framework CI
La fonction de réflexion est très puissante, alors comment l'utiliser spécifiquement ? Quels sont les scénarios d’application ? Prenez la classe CI_Upload du framework CI pour illustrer. (Après une recherche globale de ReflectionClass, je n'ai trouvé que cet endroit où la réflexion est utile.)
La logique de base de cette méthode est que l'appelant transmet un tableau $config lors de l'instanciation de CI_Upload, ainsi que toutes les configurations du tableau. sont stockés dans la méthode. Attribuez la valeur à l'attribut membre de la classe correspondant (si l'attribut a une méthode set_* correspondante, appelez la méthode set_*)
Méthode 1. Méthode d'écriture sans réflexion :
public function initialize(array $config = array(), $reset = TRUE){ $reflection = new ReflectionClass($this); ... #遍历config,如果存在set_方法调用set方法,没有则直接赋值 foreach ($config as $key => $v) { if (method_exists($this, 'set_' . $key)) { $this->{'set_' . $key}($v); }else{ $this->$key =$v; } } ...
Cette méthode présente un inconvénient : Il est impossible de déterminer si toutes les clés du tableau de configuration sont légales et si elles sont des attributs membres de la classe
Cependant, la réflexion peut être utilisée à déterminer.
L'avantage de la réflexion ici est qu'elle peut déterminer si une classe a des attributs (hasProperty
) et si une classe a des méthodes (hasMethod
).
Méthode 2. Implémentation dans le cadre CI
D:\project\app\system\libraries\Upload.php/** * Initialize preferences * * @param array $config * @param bool $reset * @return CI_Upload */public function initialize(array $config = array(), $reset = TRUE){ $reflection = new ReflectionClass($this); ... foreach ($config as $key => &$value) { if ($key[0] !== '_' && $reflection->hasProperty($key)) { if ($reflection->hasMethod('set_'.$key)) { $this->{'set_'.$key}($value); } else { $this->$key = $value; } } } ...
Quatre résumé
À propos de la réflexion (qu'il s'agisse d'une classe de réflexion (ReflectionClass) ou d'une fonction de réflexion ReflectionFunction, c'est en fait une classe et des fonctions), rappelez-vous juste une chose : les classes/fonctions de réflexion peuvent obtenir toutes les informations sur la classe, y compris :
- les informations de base de la classe (nom de la classe, s'il s'agit d'une classe abstraite, si elle peut être instanciée, si la classe est finale ou abstraite)
- Méthodes de classe, si la méthode existe, valeur de retour de la méthode, annotation de la méthode, noms des méthodes
- Attributs de classe, attributs statiques, constantes
- Localisation naming Space Namespace
Pour ceux qui ont la situation ci-dessus, autant utiliser la réflexion pour la résoudre :)
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!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


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

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

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

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.