+
+ /**
+ * Split the collection in smaller collections no bigger than the provided length
+ *
+ * @param int $length
+ * @return static[]
+ */
+ public function chunk(int $length): array
+ {
+ if ($length < 1) {
+ throw new \RangeException('BaseCollection->chunk(): Size parameter expected to be greater than 0');
+ }
+
+ return array_map(function ($array) {
+ return new static($array);
+ }, array_chunk($this->getArrayCopy(), $length));
+ }
+
+
+ /**
+ * @inheritDoc
+ *
+ * includes recursion for entity::toArray() function
+ * @see BaseEntity::toArray()
+ */
+ public function getArrayCopy(bool $recursive = false): array
+ {
+ if (!$recursive) {
+ return parent::getArrayCopy();
+ }
+
+ return array_map(function ($item) {
+ return is_object($item) ? $item->toArray() : $item;
+ }, parent::getArrayCopy());
+ }