LabeledArrayIterator.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php declare(strict_types=1);
  2. namespace TheNorthMemory\Xml;
  3. use ArrayIterator;
  4. /**
  5. * Labeled ArrayIterator with special wrapped flag
  6. *
  7. * @template TKey of array-key
  8. * @template TValue
  9. *
  10. * @extends ArrayIterator<TKey,TValue>
  11. */
  12. class LabeledArrayIterator extends ArrayIterator
  13. {
  14. /**
  15. * @var string - The label, default is `item`
  16. */
  17. private $label = 'item';
  18. /**
  19. * @var boolean - The wrapped flag, default is `false`
  20. */
  21. private $wrapped = false;
  22. /**
  23. * `Label` setter
  24. *
  25. * @param string $value - the label value
  26. * @return self<TKey,TValue>
  27. */
  28. public function withLabel(string $value): self
  29. {
  30. $this->label = $value;
  31. return $this;
  32. }
  33. /**
  34. * `Label` getter
  35. */
  36. public function getLabel(): string
  37. {
  38. return $this->label;
  39. }
  40. /**
  41. * `wrapped` flag setter
  42. *
  43. * @param bool $value - the flag value, default is `true`
  44. * @return self<TKey,TValue>
  45. */
  46. public function wrapped(bool $value = true): self
  47. {
  48. $this->wrapped = $value;
  49. return $this;
  50. }
  51. /**
  52. * `wrapped` flag checker
  53. */
  54. public function isWrapped(): bool
  55. {
  56. return $this->wrapped === true;
  57. }
  58. }