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