* @author Dennis Eichhorn * @copyright 2013 Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 * @link http://orange-management.com */ namespace phpOMS\Stdlib\Map; /** * Multimap utils. * * @category Framework * @package phpOMS\Stdlib * @author OMS Development Team * @author Dennis Eichhorn * @license OMS License 1.0 * @link http://orange-management.com * @since 1.0.0 */ class Collection implements \Countable, \ArrayAccess, \Iterator, \JsonSerializable { private $count = 0; private $collection = []; public function __construct(array $data) { $this->collection = $data; } public function toArray() : array { return $this->collection; } public function jsonSerialize() { return json_encode($this->collection); } public function avg() { return $this->sum() / $this->count(); } public function chunk() { } public function collapse() { } public function combine() { } public function contains() { } public function count() { return count($this->collection); } public function diff() { } public function diffKeys() { } public function every(int $n) { $new = []; for($i = 0; $i < $this->count(); $i += $n) { $new[] = $this->get($i); } return new self($new); } public function except($filter) { if(!is_array($filter)) { $filter = [$filter]; } $new = []; for($i = 0; $i < $this->count(); $i++) { if(!in_array($this->get($i), $filter)) { $new[] = $this->get($i); } } return new self($new); } public function filter() { } public function first() { return reset($this->collection); } public function last() { $end = end($this->collection); reset($this->collection); return $end; } public function sort() { } public function reverse() { } public function map() { } public function flatten() { } public function flip() { } public function remove() { } public function range() { } public function get($key) { if(!isset($this->collection[$key])) { if(is_int($key) && $key < $this->count()) { return $this->collection[array_keys($this->collection)[$key]]; } } else { return $this->collection[$key]; } return null; } public function groupBy() { } public function has() { } public function implode() { } public function intersect() { } public function isEmpty() { } public function keyBy() { } public function keys() { } public function max() { } public function min() { } public function sum() { } public function merge() { } public function pop() { } public function pull() { } public function put() { } public function random() { } public function find() { } public function shift() { } public function shiffle() { } public function slice() { } public function splice() { } public function sortBy() { } public function push() { } public function prepend() { } /** * Return the current element * @link http://php.net/manual/en/iterator.current.php * @return mixed Can return any type. * @since 5.0.0 */ public function current() { // TODO: Implement current() method. } /** * Move forward to next element * @link http://php.net/manual/en/iterator.next.php * @return void Any returned value is ignored. * @since 5.0.0 */ public function next() { // TODO: Implement next() method. } /** * Return the key of the current element * @link http://php.net/manual/en/iterator.key.php * @return mixed scalar on success, or null on failure. * @since 5.0.0 */ public function key() { // TODO: Implement key() method. } /** * Checks if current position is valid * @link http://php.net/manual/en/iterator.valid.php * @return boolean The return value will be casted to boolean and then evaluated. * Returns true on success or false on failure. * @since 5.0.0 */ public function valid() { // TODO: Implement valid() method. } /** * Rewind the Iterator to the first element * @link http://php.net/manual/en/iterator.rewind.php * @return void Any returned value is ignored. * @since 5.0.0 */ public function rewind() { // TODO: Implement rewind() method. } /** * Whether a offset exists * @link http://php.net/manual/en/arrayaccess.offsetexists.php * @param mixed $offset

* An offset to check for. *

* @return boolean true on success or false on failure. *

*

* The return value will be casted to boolean if non-boolean was returned. * @since 5.0.0 */ public function offsetExists($offset) { // TODO: Implement offsetExists() method. } /** * Offset to retrieve * @link http://php.net/manual/en/arrayaccess.offsetget.php * @param mixed $offset

* The offset to retrieve. *

* @return mixed Can return all value types. * @since 5.0.0 */ public function offsetGet($offset) { // TODO: Implement offsetGet() method. } /** * Offset to set * @link http://php.net/manual/en/arrayaccess.offsetset.php * @param mixed $offset

* The offset to assign the value to. *

* @param mixed $value

* The value to set. *

* @return void * @since 5.0.0 */ public function offsetSet($offset, $value) { // TODO: Implement offsetSet() method. } /** * Offset to unset * @link http://php.net/manual/en/arrayaccess.offsetunset.php * @param mixed $offset

* The offset to unset. *

* @return void * @since 5.0.0 */ public function offsetUnset($offset) { // TODO: Implement offsetUnset() method. } }