]> git.mxchange.org Git - friendica.git/blobdiff - src/BaseCollection.php
Merge pull request #13676 from MrPetovan/bug/13673-markers-json-output
[friendica.git] / src / BaseCollection.php
index d2212e244b921d3e6ec18fbcb0e03eb79f0e6861..f2a64151d8bd5b2583a774d97a6bb5512155200d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -48,31 +48,35 @@ class BaseCollection extends \ArrayIterator
        /**
         * @inheritDoc
         */
-       public function offsetSet($offset, $value)
+       #[\ReturnTypeWillChange]
+       public function offsetSet($key, $value): void
        {
-               if (is_null($offset)) {
+               if (is_null($key)) {
                        $this->totalCount++;
                }
 
-               parent::offsetSet($offset, $value);
+               parent::offsetSet($key, $value);
        }
 
        /**
         * @inheritDoc
         */
-       public function offsetUnset($offset)
+       #[\ReturnTypeWillChange]
+       public function offsetUnset($key): void
        {
-               if ($this->offsetExists($offset)) {
+               if ($this->offsetExists($key)) {
                        $this->totalCount--;
                }
 
-               parent::offsetUnset($offset);
+               parent::offsetUnset($key);
        }
 
        /**
-        * @return int
+        * Getter for total count
+        *
+        * @return int Total count
         */
-       public function getTotalCount()
+       public function getTotalCount(): int
        {
                return $this->totalCount;
        }
@@ -85,7 +89,7 @@ class BaseCollection extends \ArrayIterator
         * @return array
         * @see array_column()
         */
-       public function column($column, $index_key = null)
+       public function column(string $column, $index_key = null): array
        {
                return array_column($this->getArrayCopy(true), $column, $index_key);
        }
@@ -97,7 +101,7 @@ class BaseCollection extends \ArrayIterator
         * @return BaseCollection
         * @see array_map()
         */
-       public function map(callable $callback)
+       public function map(callable $callback): BaseCollection
        {
                return new static(array_map($callback, $this->getArrayCopy()), $this->getTotalCount());
        }
@@ -110,7 +114,7 @@ class BaseCollection extends \ArrayIterator
         * @return BaseCollection
         * @see array_filter()
         */
-       public function filter(callable $callback = null, int $flag = 0)
+       public function filter(callable $callback = null, int $flag = 0): BaseCollection
        {
                return new static(array_filter($this->getArrayCopy(), $callback, $flag));
        }
@@ -125,6 +129,24 @@ class BaseCollection extends \ArrayIterator
                return new static(array_reverse($this->getArrayCopy()), $this->getTotalCount());
        }
 
+       /**
+        * 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
         *