Util.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. class ChargeBee_Util
  3. {
  4. static function toCamelCaseFromUnderscore($str) {
  5. $func = create_function('$c', 'return strtoupper($c[1]);');
  6. return preg_replace_callback('/_([a-z])/', $func, $str);
  7. }
  8. static function toUnderscoreFromCamelCase($str) {
  9. $func = create_function('$c', 'return "_" . strtolower($c[1]);');
  10. return preg_replace_callback('/([A-Z])/', $func, $str);
  11. }
  12. static function serialize($value, $prefix=NULL, $idx=NULL)
  13. {
  14. if($value && !is_array($value))
  15. {
  16. throw new Exception("only arrays are allowed as value");
  17. }
  18. $serialized = array();
  19. foreach ($value as $k => $v)
  20. {
  21. if (is_array($v) && !is_int($k))
  22. {
  23. $serialized = array_merge($serialized, self::serialize($v, self::toUnderscoreFromCamelCase($k)));
  24. }
  25. else if (is_array($v) && is_int($k))
  26. {
  27. $serialized = array_merge($serialized, self::serialize($v, $prefix, $k));
  28. }
  29. else
  30. {
  31. $usK = self::toUnderscoreFromCamelCase($k);
  32. $key = (!is_null($prefix)?$prefix:'').(!is_null($prefix)?'['.$usK.']':$usK).(!is_null($idx)?'['.$idx.']':'');
  33. $serialized[$key] = self::asString($v);
  34. }
  35. }
  36. return $serialized;
  37. }
  38. static function asString($value)
  39. {
  40. if(is_null($value))
  41. {
  42. return '';
  43. }
  44. else if(is_bool($value))
  45. {
  46. return ($value) ? 'true' : 'false';;
  47. }
  48. else
  49. {
  50. return (string)$value;
  51. }
  52. }
  53. static function encodeURIPath()
  54. {
  55. $uriPaths = "";
  56. foreach(func_get_args() as $arg) {
  57. $arg=trim($arg);
  58. if( $arg == null || strlen($arg) < 1 ) {
  59. throw new Exception("Id cannot be null or empty");
  60. }
  61. $uriPaths .= "/" . rawurlencode($arg);
  62. }
  63. return $uriPaths;
  64. }
  65. }
  66. ?>