php 反射 reflectionclass,phpreflectionclass今天遇到了这样一个问题,如下代码:
classa.php
classb.php
当我需要找出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 '';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 '';print_r($array);
最后结果:
array( [0] => funcba [1] => funcbb [2] => funcbc [3] => funcaa)
完成,关于 reflectionclass 更多的知识请参考手册
php 怎把反射初始化的对象转换成类的对象
你要确定引入了user类的类定义文件,否则反序列化是不会成功的。
反序列化失败,$user就不会是user对象的实例,也就不会存在方法getmodelname了。
php 反射api的问题,急
http://www.bkjia.com/phpjc/900990.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/900990.htmltecharticlephp 反射 reflectionclass,phpreflectionclass 今天遇到了这样一个问题,如下代码: classa.php ?phpclass classa{public function funcaa(){}public function funcab(){}...