$value) { $this->set($key, $value); } } /** * To string. */ public function __toString(): string { return $this->toJson(); } /** * Get a data by key. * * @return mixed */ public function __get(string $key) { return $this->get($key); } /** * Assigns a value to the specified data. * * @param mixed $value */ public function __set(string $key, $value) { $this->set($key, $value); } /** * Whether or not an data exists by key. */ public function __isset(string $key): bool { return $this->has($key); } /** * Unsets an data by key. */ public function __unset(string $key) { $this->forget($key); } /** * Return all items. */ public function all(): array { return $this->items; } /** * Return specific items. */ public function only(array $keys): array { $return = []; foreach ($keys as $key) { $value = $this->get($key); if (!is_null($value)) { $return[$key] = $value; } } return $return; } /** * Get all items except for those with the specified keys. * * @param mixed $keys * * @return static */ public function except($keys) { $keys = is_array($keys) ? $keys : func_get_args(); return new static(Arr::except($this->items, $keys)); } /** * Merge data. * * @param Collection|array $items */ public function merge($items): array { foreach ($items as $key => $value) { $this->set($key, $value); } return $this->all(); } /** * To determine Whether the specified element exists. */ public function has(string $key): bool { return !is_null(Arr::get($this->items, $key)); } /** * Retrieve the first item. * * @return mixed */ public function first() { return reset($this->items); } /** * Retrieve the last item. * * @return mixed */ public function last() { $end = end($this->items); reset($this->items); return $end; } /** * add the item value. * * @param mixed $value */ public function add(string $key, $value) { Arr::set($this->items, $key, $value); } /** * Set the item value. * * @param mixed $value */ public function set(string $key, $value) { Arr::set($this->items, $key, $value); } /** * Retrieve item from Collection. * * @param string $key * @param mixed $default * * @return mixed */ public function get(?string $key = null, $default = null) { return Arr::get($this->items, $key, $default); } /** * Remove item form Collection. */ public function forget(string $key) { Arr::forget($this->items, $key); } /** * Build to array. */ public function toArray(): array { return $this->all(); } /** * Build to json. */ public function toJson(int $option = JSON_UNESCAPED_UNICODE): string { return json_encode($this->all(), $option); } /** * (PHP 5 >= 5.4.0)
* Specify data which should be serialized to JSON. * * @see http://php.net/manual/en/jsonserializable.jsonserialize.php * * @return mixed data which can be serialized by json_encode, * which is a value of any type other than a resource */ public function jsonSerialize() { return $this->items; } /** * (PHP 5 >= 5.1.0)
* String representation of object. * * @see http://php.net/manual/en/serializable.serialize.php * * @return string the string representation of the object or null */ public function serialize() { return serialize($this->items); } /** * (PHP 5 >= 5.0.0)
* Retrieve an external iterator. * * @see http://php.net/manual/en/iteratoraggregate.getiterator.php * * @return ArrayIterator An instance of an object implementing Iterator or * ArrayIterator */ public function getIterator() { return new ArrayIterator($this->items); } /** * (PHP 5 >= 5.1.0)
* Count elements of an object. * * @see http://php.net/manual/en/countable.count.php * * @return int The custom count as an integer. *

*

* The return value is cast to an integer */ public function count() { return count($this->items); } /** * (PHP 5 >= 5.1.0)
* Constructs the object. * * @see http://php.net/manual/en/serializable.unserialize.php * * @param string $serialized

* The string representation of the object. *

* * @return mixed|void */ public function unserialize($serialized) { return $this->items = unserialize($serialized); } /** * (PHP 5 >= 5.0.0)
* Whether a offset exists. * * @see http://php.net/manual/en/arrayaccess.offsetexists.php * * @param mixed $offset

* An offset to check for. *

* * @return bool true on success or false on failure. * The return value will be casted to boolean if non-boolean was returned */ public function offsetExists($offset) { return $this->has($offset); } /** * (PHP 5 >= 5.0.0)
* Offset to unset. * * @see http://php.net/manual/en/arrayaccess.offsetunset.php * * @param mixed $offset

* The offset to unset. *

*/ public function offsetUnset($offset) { if ($this->offsetExists($offset)) { $this->forget($offset); } } /** * (PHP 5 >= 5.0.0)
* Offset to retrieve. * * @see http://php.net/manual/en/arrayaccess.offsetget.php * * @param mixed $offset

* The offset to retrieve. *

* * @return mixed Can return all value types */ public function offsetGet($offset) { return $this->offsetExists($offset) ? $this->get($offset) : null; } /** * (PHP 5 >= 5.0.0)
* Offset to set. * * @see 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. *

*/ public function offsetSet($offset, $value) { $this->set($offset, $value); } }