Encode.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace AlibabaCloud\Client;
  3. /**
  4. * Class Encode
  5. *
  6. * @package AlibabaCloud\Client
  7. */
  8. class Encode
  9. {
  10. /**
  11. * @var array
  12. */
  13. private $data;
  14. /**
  15. * @param array $data
  16. *
  17. * @return static
  18. */
  19. public static function create(array $data)
  20. {
  21. return new static($data);
  22. }
  23. /**
  24. * Encode constructor.
  25. *
  26. * @param array $data
  27. */
  28. private function __construct(array $data)
  29. {
  30. $this->data = $data;
  31. }
  32. /**
  33. * @return bool|string
  34. */
  35. public function toString()
  36. {
  37. $string = '';
  38. foreach ($this->data as $key => $value) {
  39. $encode = rawurlencode($value);
  40. if ($encode === '') {
  41. $string .= "$key&";
  42. } else {
  43. $string .= "$key=$encode&";
  44. }
  45. }
  46. if (0 < count($this->data)) {
  47. $string = substr($string, 0, -1);
  48. }
  49. return $string;
  50. }
  51. /**
  52. * @return $this
  53. */
  54. public function ksort()
  55. {
  56. ksort($this->data);
  57. return $this;
  58. }
  59. }