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了。

当 Windows 检测到设备的驱动程序不兼容或损坏时,它无法对其进行初始化。设备停止工作,当用户调查时,“ Windows 无法为此硬件初始化设备驱动程序(代码 37) ”错误消息显示在“设备状态”窗格中。解决这个问题很容易,你可以很容易地做到这一点。修复 1 – 扫描计算机您可以扫描设备以查找任何硬件更改。Windows 最终将检查并检测任何驱动程序更改。1.您只需右键单击“ Windows键”并点击“设备管理器”。2. 当设备管理器出现在您的系统上时,单击菜单栏上的“操作”。3. 在这里,

错误代码 37 表示 Windows 检测到设备驱动程序存在问题,无法启动硬件设备。这意味着您的系统上未正确安装软件设备驱动程序,或者您尝试使用的硬件与 Windows 不兼容。您已经知道驱动程序对于设备的平稳运行至关重要,因此如果您要使用硬件设备,则需要立即解决此错误。在本文中,我们将向您展示绕过此错误的各种方法。是什么原因导致 Windows 错误代码 37?当您得到 Windows 无法初始化此硬件的设备驱动程序时。(代码 37) 消息,它可能由几个问题引起,包括:兼容性问题 – 当您将硬

解决办法:1、重新安装应用程序;2、修复或重新安装DLL;3、系统还原或检查点恢复;4、使用系统文件检查器(SFC)扫描;5、检查启动项和服务;6、使用工具;7、查阅官方文档或论坛;8、考虑安全软件;9、查看事件查看器;10、寻求专家帮助等等。

win7系统是一款非常优秀的高性能系统,在对win7的不断使用中有很多的朋友都在问win7怎么初始化电脑!今天小编为大家带来的就是win7电脑恢复出厂设置的操作方法。win7怎么初始化电脑的相关信息:图文详解操作步骤:1、打开“开始菜单”,然后进入。2、点击进入左侧底部的设置。3、在Win10更新和恢复设置的界面中,选择。4、点击“删除所有内容并重新安装Windows”下方的。5、可以看到如下“初始化”设置了,然后点击。6、进入“你的电脑有多个驱动器”设置选项,这里有和两个选项,可以根据情况选择

许多游戏玩家遇到了游戏无法初始化图形系统的令人沮丧的问题。这篇文章将深入探讨这个问题背后的常见原因,并找到简单而有效的解决方案,让你重新回到棋盘上,并在任何时间内通过关卡。因此,如果你在过山车大亨、刺客信条、托尼·霍克的职业溜冰者等中收到无法初始化图形系统错误信息,请遵循本文中提到的解决方案。初始化错误无法初始化图形系统。不支持显卡。修复无法初始化图形系统错误信息要解决过山车大亨、刺客信条、托尼·霍克的专业溜冰者等游戏中的无法初始化图形系统错误,可以尝试执行以下解决方法:更新显卡驱动程序在兼容模

win7系统是一款非常优秀的高性能系统,最近一段时间里有很多win7系统的小伙伴们都在找win7怎么初始化网络设置的方法,今天小编为大家带来的就是win7电脑网络初始化的详细教程一起来看看吧。win7怎么初始化网络设置的详细教程:图文操作步骤:1、点“开始”菜单,找到并打开“控制面板”,进去之后再点“网络和共享中心”。2、然后找到并点开“更改适配器设备”。3、接下来,在打开的窗口中,鼠标右键点击“本地连接”,再点“属性”。4、打开之后,就找到“Internet协议版本(TCP/IPv4)”,再双

C++在同名的字典方面与Python不同,但它具有相似功能的相同数据结构。C++支持映射,可在STL类std::map中使用。映射对象在每个条目中包含一对值,一个是键值,另一个是映射值。键值用于在映射中搜索和唯一标识条目。而映射值不一定是唯一的,键值在映射中必须始终是唯一的。让我们看一下如何使用映射。首先,让我们看看如何在C++中定义一个映射数据结构。语法#includemap<data_type1,data_type2>myMap;让我们举个例子,看看如何做到这一点−示例#incl

SSD 彻底改变了技术世界。这些数据存储解决方案凭借其超快和无与伦比的读/写速度,让每个用户都渴望在其中安装系统操作系统。但是,如果您的新 SSD 没有出现在您的 Windows 设备上怎么办?这是插入系统的全新 SSD 可能面临的一个典型问题。不用担心。我们刚刚得到了正确的解决方案,您所要做的就是按照这些步骤操作,SSD 将立即回到您的文件资源管理器。解决方法——1. 检查SSD的连接。如果您使用的是 USB 集线器,请将 SSD 直接连接到您的系统。查看 SSD 的连接器是否有任何物理缺陷。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 English version
Recommended: Win version, supports code prompts!

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools
