FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
ameliabooking
/
src
/
Domain
/
Collection
Edit File: AbstractCollection.php
<?php namespace AmeliaBooking\Domain\Collection; use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException; /** * Class AbstractCollection * * @package AmeliaBooking\Domain\Collection */ class AbstractCollection { /** @var array|null */ protected $items = []; /** * AbstractCollection constructor. * * @param array $items * * @throws InvalidArgumentException */ public function __construct($items = null) { if (!is_array($items)) { return; } foreach ($items as $item) { $this->addItem($item); } $this->items = $items; } /** * Add an object to the collection by putting it in the $items array at a * specified location specified by $key (if no key is provided, we let * PHP pick the next available index). If an attempt is made to add an object * using a key that already exists, an exception should be thrown to prevent * inadvertently overwriting existing information * * @param $item * @param null $key * @param bool $force * * @throws InvalidArgumentException */ public function addItem($item, $key = null, $force = false) { if ($key !== null) { $this->placeItem($item, $key, $force); return; } $this->items[] = $item; } /** * Take the key as a parameter indicating which items are targeted for removal. * * @param $key * * @throws InvalidArgumentException */ public function deleteItem($key) { if (!$this->keyExists($key)) { throw new InvalidArgumentException("Invalid key {$key}."); } unset($this->items[$key]); } /** * Take the key as a parameter indicating which items are targeted for retrieval. * * @param $key * * @return mixed * @throws InvalidArgumentException */ public function getItem($key) { if (!$this->keyExists($key)) { throw new InvalidArgumentException("Invalid key {$key}."); } return $this->items[$key]; } /** * Returns items list * * @return array|null */ public function getItems() { return $this->items; } /** * List of keys to any external code * * @return array */ public function keys() { return array_keys($this->items); } /** * How many items are in the collection. * * @return int */ public function length() { return count($this->items); } /** * Determining whether a given key exists in the collection * * @param $key * * @return bool */ public function keyExists($key) { return isset($this->items[$key]); } /** * Place an item on the specific position * * @param $item * @param $key * @param $force * * @throws InvalidArgumentException */ public function placeItem($item, $key, $force) { if ($force === false && $this->keyExists($key)) { throw new InvalidArgumentException("Key {$key} already in use."); } $this->items[$key] = $item; } /** * Return an array of collection items * * @param $isFrontEndRequest * * @return array */ public function toArray($isFrontEndRequest = false) { $array = []; foreach ($this->items as $item) { $array[] = $item->toArray($isFrontEndRequest); } return $array; } }
Save
Back