php利用反射机制查找类和方法的所在位置
//参数1是类名,参数2是方法名 $func = new ReflectionMethod('UnifiedOrder_pub', 'getPrepayId'); //从第几行开始 $start = $func->getStartLine() - 1; //从第几行结束 $end = $func->getEndLine() - 1; //获取路径地址 $filename = $func->getFileName();
//这是通过方法名查找方法所在位置 $funcName="SafeHtml"; //要查找的函数名 Reflection::export(new ReflectionFunction($funcName));
//查找类名所在位置 $func = new ReflectionClass('counter'); echo $func->getFileName();
下面是摘抄的示例代码比较全面
<?php //摘自:http://www.dewen.org/q/10775 function a() { } class b { public function f() { } } function function_dump($funcname) { try { if(is_array($funcname)) { $func = new ReflectionMethod($funcname[0], $funcname[1]); $funcname = $funcname[1]; } else { //这个应该是当只有一个参数的时候就看做是本类的发放吧,大概,自行百度 $func = new ReflectionFunction($funcname); } } catch (ReflectionException $e) { echo $e->getMessage(); return; } $start = $func->getStartLine() - 1; $end = $func->getEndLine() - 1; $filename = $func->getFileName(); echo "function $funcname defined by $filename($start - $end)\n"; } function_dump('a'); function_dump(array('b', 'f')); $b = new b(); function_dump(array($b, 'f')); ?>
破罐子互摔