Util.php 1.8 KB

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