debug.php 1.7 KB

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