Util.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. $uriPaths .= "/" . rawurlencode($arg);
  58. }
  59. return $uriPaths;
  60. }
  61. }
  62. ?>