<?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
*
/**
* @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;
}
* @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);
}
* @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());
}
* @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));
}
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
*