X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FBaseCollection.php;h=97e772f168b330bd2706eefc208d576153d764f1;hb=7b02585b978f7aef9d5c5a2c5d2b238cb674a4b7;hp=5b35653fdd661c86a5d79d16ee3585429c7a81d9;hpb=e80d68ba53776bed047d897f52db7e25b35a479d;p=friendica.git diff --git a/src/BaseCollection.php b/src/BaseCollection.php index 5b35653fdd..97e772f168 100644 --- a/src/BaseCollection.php +++ b/src/BaseCollection.php @@ -1,6 +1,6 @@ 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; } @@ -86,9 +89,9 @@ abstract 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(), $column, $index_key); + return array_column($this->getArrayCopy(true), $column, $index_key); } /** @@ -98,7 +101,7 @@ abstract 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()); } @@ -111,8 +114,35 @@ abstract 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)); } + + /** + * Reverse the orders of the elements in the collection + * + * @return $this + */ + public function reverse(): BaseCollection + { + return new static(array_reverse($this->getArrayCopy()), $this->getTotalCount()); + } + + /** + * @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()); + } }