PageRenderTime 40ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/libraries/phpxmlrpc/compat/is_callable.php

https://github.com/joebushi/joomla
PHP | 53 lines | 32 code | 1 blank | 20 comment | 18 complexity | 62153ac1179d853c8556395e5d1ce386 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0
  1. <?php
  2. /**
  3. * Replace function is_callable()
  4. *
  5. * @category PHP
  6. * @package PHP_Compat
  7. * @link http://php.net/function.is_callable
  8. * @author Gaetano Giunta <giunta.gaetano@sea-aeroportimilano.it>
  9. * @version $Id$
  10. * @since PHP 4.0.6
  11. * @require PHP 4.0.0 (true, false, etc...)
  12. * @todo add the 3rd parameter syntax...
  13. */
  14. if (!function_exists('is_callable')) {
  15. function is_callable($var, $syntax_only=false)
  16. {
  17. if ($syntax_only)
  18. {
  19. /* from The Manual:
  20. * If the syntax_only argument is TRUE the function only verifies
  21. * that var might be a function or method. It will only reject simple
  22. * variables that are not strings, or an array that does not have a
  23. * valid structure to be used as a callback. The valid ones are
  24. * supposed to have only 2 entries, the first of which is an object
  25. * or a string, and the second a string
  26. */
  27. return (is_string($var) || (is_array($var) && count($var) == 2 && is_string(end($var)) && (is_string(reset($var)) || is_object(reset($var)))));
  28. }
  29. else
  30. {
  31. if (is_string($var))
  32. {
  33. return function_exists($var);
  34. }
  35. else if (is_array($var) && count($var) == 2 && is_string($method = end($var)))
  36. {
  37. $obj = reset($var);
  38. if (is_string($obj))
  39. {
  40. $methods = get_class_methods($obj);
  41. return (bool)(is_array($methods) && in_array(strtolower($method), $methods));
  42. }
  43. else if (is_object($obj))
  44. {
  45. return method_exists($obj, $method);
  46. }
  47. }
  48. return false;
  49. }
  50. }
  51. }
  52. ?>