debug.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. /**
  3. * Description of Debug
  4. * 已经不用amfphp作为传输层了.所以删除了其框架,
  5. * 但是,其BackOffice的调试页面比较习惯,故此仿写了一个.
  6. * @author gwang (mail@wanggangzero.cn)
  7. */
  8. class Debug
  9. {
  10. //put your code here
  11. public static function listMethod($class)
  12. {
  13. $class_name = is_string($class) ? $class : get_class($class);
  14. if (class_exists($class_name)) {
  15. echo "\n <b>$class_name</b>";
  16. echo "\n<ul>";
  17. $methods = get_class_methods($class_name);
  18. $reflector = new ReflectionClass($class_name);
  19. $methods = $reflector->getMethods();
  20. foreach ($methods as $method) {
  21. if (substr($method->name, 0, 1) == '_') {
  22. //methods starting with a '_' as they are reserved, so filter them out
  23. continue;
  24. }
  25. $mname = $method->name;
  26. echo "<script type='text/javascript' >" . " params_$mname=" . json_encode($method->getParameters()) . ';</script>';
  27. echo "\n <li><a onclick='updateCallDialog(\"" . urlencode($class_name) . "\",\"" . $mname . "\", params_$mname );' > $mname </a></li>";
  28. }
  29. echo "\n</ul>";
  30. }
  31. }
  32. /**
  33. * 调用函数
  34. * @param type $class
  35. * @param type $method
  36. * @return type
  37. */
  38. public static function fire_theme_method($class, $method)
  39. {
  40. $fire_args = array();
  41. $reflection = new ReflectionMethod($class, $method);
  42. foreach ($reflection->getParameters() AS $arg) {
  43. $fire_args[] = $arg->name;
  44. }
  45. return call_user_func_array(array($class, $method), $fire_args);
  46. }
  47. }