PHP 反射 ReflectionClass,phpreflectionclass_PHP教程
PHP 反射 ReflectionClass,phpreflectionclass
今天遇到了这样一个问题,如下代码:
classA.php
<?php class ClassA{ public function funcAa(){ } public function funcAb(){ } public function funcAc(){ } } ?>
classB.php
<?php include './classA.php'; class ClassB extends ClassA{ public function funcBa(){ } public function funcBb(){ } public function funcBc(){ } public function funcAa(){ parent::funcAa(); } } $classB = new ClassB; $classFuncB = get_class_methods($classB); echo '<pre class="brush:php;toolbar:false">'; print_r($classFuncB); ?>
当我需要找出ClassB里面的所有方法的时候结果如下:
Array ( [0] => funcBa [1] => funcBb [2] => funcBc [3] => funcAa [4] => funcAb [5] => funcAc )
一共6个方法,实际上我不想要继承了ClassA里面的方法,我只想要ClassB的方法,怎么办呢?我稍微更改了如下:
$classA = new ClassA; $classB = new ClassB; $classFuncA = get_class_methods($classA); $classFuncB = get_class_methods($classB); echo '<pre class="brush:php;toolbar:false">'; print_r(array_diff($classFuncB,$classFuncA));
结果如下:
Array ( [0] => funcBa [1] => funcBb [2] => funcBc )
少了一个方法 funcAa ,虽然funcAa是 ClassB 从 ClassA那里继承过来的,但是同样ClassB也有这个方法,所以不是我想要的结果。
解决方法:
$reflection = new ReflectionClass('ClassB'); print_r($reflection->getMethods());
结果:
Array ( [0] => ReflectionMethod Object ( [name] => funcBa [class] => ClassB ) [1] => ReflectionMethod Object ( [name] => funcBb [class] => ClassB ) [2] => ReflectionMethod Object ( [name] => funcBc [class] => ClassB ) [3] => ReflectionMethod Object ( [name] => funcAa [class] => ClassB ) [4] => ReflectionMethod Object ( [name] => funcAb [class] => ClassA ) [5] => ReflectionMethod Object ( [name] => funcAc [class] => ClassA ) )
可以看到 [4]、[5] 里面的class 对应的值是ClassA,而其他对应的值都是ClassB。通过这个可以用foreach来实现最后想要的结果:
$reflection = new ReflectionClass('ClassB'); $array = ''; foreach($reflection->getMethods() as $obj){ if($obj->class == $reflection->getName()){ //$reflection->getName() 获取类名 $array[] = $obj->name; } } echo '<pre class="brush:php;toolbar:false">'; print_r($array);
最后结果:
Array ( [0] => funcBa [1] => funcBb [2] => funcBc [3] => funcAa )
完成,关于 ReflectionClass 更多的知识请参考手册
你要确定引入了User类的类定义文件,否则反序列化是不会成功的。
反序列化失败,$user就不会是User对象的实例,也就不会存在方法getModelName了。

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)

Sujets chauds

Lorsque Windows détecte que le pilote d'un périphérique est incompatible ou corrompu, il ne peut pas l'initialiser. Le périphérique cesse de fonctionner et lorsque l'utilisateur enquête, un message d'erreur « Windows ne peut pas initialiser le pilote de périphérique pour ce matériel (code 37) » apparaît dans le volet État du périphérique. Résoudre ce problème est simple et vous pouvez le faire facilement. Correctif 1 – Analysez votre ordinateur Vous pouvez analyser votre appareil pour détecter toute modification matérielle. Windows finira par vérifier et détecter toute modification du pilote. 1. Il vous suffit de faire un clic droit sur la « Clé Windows » et de cliquer sur « Gestionnaire de périphériques ». 2. Lorsque le Gestionnaire de périphériques apparaît sur votre système, cliquez sur Actions dans la barre de menu. 3. Ici,

Le code d'erreur 37 signifie que Windows a détecté un problème avec le pilote de périphérique et ne peut pas démarrer le périphérique matériel. Cela signifie que le pilote de périphérique logiciel n'est pas installé correctement sur votre système ou que le matériel que vous essayez d'utiliser n'est pas compatible avec Windows. Vous savez déjà que les pilotes sont cruciaux pour le bon fonctionnement de votre appareil, donc si vous envisagez d'utiliser un périphérique matériel, vous devez résoudre cette erreur immédiatement. Dans cet article, nous allons vous montrer différentes manières de contourner cette erreur. Qu’est-ce qui cause le code d’erreur Windows 37 ? Lorsque vous obtenez, Windows ne peut pas initialiser le pilote de périphérique pour ce matériel. (Code 37), cela peut être dû à plusieurs problèmes, notamment : Problèmes de compatibilité – Lorsque vous ajoutez un disque dur

Solution : 1. Réinstallez l'application ; 2. Réparez ou réinstallez la DLL ; 3. Restauration du système ou récupération du point de contrôle ; 4. Analysez à l'aide du vérificateur de fichiers système (SFC) ; Consultez la documentation officielle ou les forums ; 8. Envisagez un logiciel de sécurité ; 9. Vérifiez l'observateur d'événements ; 10. Demandez l'aide d'un expert, etc.

Le système win7 est un très excellent système hautes performances Lors de l'utilisation continue de win7, de nombreux amis demandent comment initialiser l'ordinateur dans win7 ! Aujourd'hui, l'éditeur vous expliquera comment restaurer les paramètres d'usine d'un ordinateur win7. Informations connexes sur la façon d'initialiser l'ordinateur dans Win7 : Instructions détaillées avec images et texte Étapes : 1. Ouvrez le « Menu Démarrer » et entrez. 2. Cliquez pour entrer les paramètres en bas du côté gauche. 3. Dans l'interface des paramètres de mise à jour et de récupération Win10, sélectionnez. 4. Cliquez ci-dessous « Supprimer tout le contenu et réinstaller Windows ». 5. Vous pouvez voir les paramètres « Initialisation » suivants, puis cliquez sur. 6. Entrez l'option de paramètre « Votre ordinateur dispose de plusieurs lecteurs ». Il existe deux options ici, que vous pouvez choisir en fonction de la situation.

Le système win7 est un très excellent système hautes performances. Récemment, de nombreux amis du système win7 cherchent comment initialiser les paramètres réseau dans win7. Aujourd'hui, l'éditeur vous apporte les détails de l'initialisation du réseau informatique win7. au tutoriel. Tutoriel détaillé sur la façon d'initialiser les paramètres réseau dans Win7 : Étapes graphiques : 1. Cliquez sur le menu « Démarrer », recherchez et ouvrez le « Panneau de configuration », puis cliquez sur « Centre Réseau et partage ». 2. Ensuite, recherchez et cliquez sur « Modifier le périphérique adaptateur ». 3. Ensuite, dans la fenêtre qui s'ouvre, cliquez avec le bouton droit sur « Connexion au réseau local » puis cliquez sur « Propriétés ». 4. Après l'avoir ouvert, recherchez « Version du protocole Internet (TCP/IPv4) » et doublez

De nombreux joueurs ont rencontré le problème frustrant de l’échec du jeu à initialiser le système graphique. Cet article examinera les raisons courantes de ce problème et trouvera des solutions simples mais efficaces qui vous permettront de revenir sur le plateau et de battre le niveau en un rien de temps. Donc, si vous recevez un message d'erreur Impossible d'initialiser le système graphique dans Rollercoaster Tycoon, Assassin's Creed, Tony Hawk's Pro Skater, etc., suivez les solutions mentionnées dans cet article. Erreur d'initialisation Impossible d'initialiser le système graphique. Les cartes graphiques ne sont pas prises en charge. Corriger le message d'erreur Impossible d'initialiser le système graphique Pour résoudre l'erreur Impossible d'initialiser le système graphique dans des jeux comme Rollercoaster Tycoon, Assassin's Creed, Tony Hawk's Pro Skater, etc., vous pouvez essayer les solutions de contournement suivantes : Mettez à jour le pilote de votre carte graphique dans le mode de compatibilité

C++ diffère de Python en termes de dictionnaire portant le même nom, mais il possède la même structure de données avec des fonctionnalités similaires. C++ prend en charge le mappage, qui peut être utilisé dans la classe STL std::map. L'objet map contient une paire de valeurs dans chaque entrée, l'une est la valeur clé et l'autre est la valeur map. Les valeurs clés sont utilisées pour rechercher et identifier de manière unique les entrées dans la carte. Bien que les valeurs mappées ne soient pas nécessairement uniques, les valeurs clés doivent toujours être uniques dans la carte. Voyons comment utiliser le mappage. Voyons d’abord comment définir une structure de données mappée en C++. Syntaxe #includemap<data_type1,data_type2>myMap Prenons un exemple pour voir comment procéder - Exemple #incl ;

Les SSD ont révolutionné le monde de la technologie. Ces solutions de stockage de données, avec leurs vitesses de lecture/écriture ultra-rapides et inégalées, donnent envie à chaque utilisateur d'y installer son système d'exploitation. Mais que se passe-t-il si votre nouveau SSD n’apparaît pas sur votre appareil Windows ? Il s'agit d'un problème typique auquel vous pourriez être confronté avec un tout nouveau SSD branché sur votre système. Ne t'inquiète pas. Nous venons d'avoir la bonne solution, tout ce que vous avez à faire est de suivre ces étapes et votre SSD sera de retour dans votre explorateur de fichiers en un rien de temps. Solution - 1. Vérifiez la connexion SSD. Si vous utilisez un hub USB, connectez le SSD directement à votre système. Vérifiez les connecteurs du SSD pour déceler tout défaut physique.
