Set.php 820 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace Stripe\Util;
  3. use ArrayIterator;
  4. use IteratorAggregate;
  5. class Set implements IteratorAggregate
  6. {
  7. private $_elts;
  8. public function __construct($members = [])
  9. {
  10. $this->_elts = [];
  11. foreach ($members as $item) {
  12. $this->_elts[$item] = true;
  13. }
  14. }
  15. public function includes($elt)
  16. {
  17. return isset($this->_elts[$elt]);
  18. }
  19. public function add($elt)
  20. {
  21. $this->_elts[$elt] = true;
  22. }
  23. public function discard($elt)
  24. {
  25. unset($this->_elts[$elt]);
  26. }
  27. public function toArray()
  28. {
  29. return \array_keys($this->_elts);
  30. }
  31. /**
  32. * @return ArrayIterator
  33. */
  34. #[\ReturnTypeWillChange]
  35. public function getIterator()
  36. {
  37. return new ArrayIterator($this->toArray());
  38. }
  39. }