Parameter.php 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace AlibabaCloud\Tea;
  3. use ArrayIterator;
  4. use IteratorAggregate;
  5. use ReflectionObject;
  6. use Traversable;
  7. /**
  8. * Class Parameter.
  9. */
  10. abstract class Parameter implements IteratorAggregate
  11. {
  12. /**
  13. * @return ArrayIterator|Traversable
  14. */
  15. #[\ReturnTypeWillChange]
  16. public function getIterator()
  17. {
  18. return new ArrayIterator($this->toArray());
  19. }
  20. /**
  21. * @return array
  22. */
  23. public function getRealParameters()
  24. {
  25. $array = [];
  26. $obj = new ReflectionObject($this);
  27. $properties = $obj->getProperties();
  28. foreach ($properties as $property) {
  29. $docComment = $property->getDocComment();
  30. $key = trim(Helper::findFromString($docComment, '@real', "\n"));
  31. $value = $property->getValue($this);
  32. $array[$key] = $value;
  33. }
  34. return $array;
  35. }
  36. /**
  37. * @return array
  38. */
  39. public function toArray()
  40. {
  41. return $this->getRealParameters();
  42. }
  43. }