X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FBaseCollection.php;h=d2212e244b921d3e6ec18fbcb0e03eb79f0e6861;hb=39c2282c1292af173f854e2a4338c601f9ba58f6;hp=c4d637a3672642cb604fabdd161ce8de69387fe0;hpb=2a431b580f2e8f6a596e84175932e793678cde63;p=friendica.git diff --git a/src/BaseCollection.php b/src/BaseCollection.php index c4d637a367..d2212e244b 100644 --- a/src/BaseCollection.php +++ b/src/BaseCollection.php @@ -22,12 +22,11 @@ namespace Friendica; /** - * The Collection classes inheriting from this abstract class are meant to represent a list of database record. - * The associated model class has to be provided in the child classes. + * The Collection classes inheriting from this class are meant to represent a list of structured objects of a single type. * * Collections can be used with foreach(), accessed like an array and counted. */ -abstract class BaseCollection extends \ArrayIterator +class BaseCollection extends \ArrayIterator { /** * This property is used with paginated results to hold the total number of items satisfying the paginated request. @@ -88,7 +87,7 @@ abstract class BaseCollection extends \ArrayIterator */ public function column($column, $index_key = null) { - return array_column($this->getArrayCopy(), $column, $index_key); + return array_column($this->getArrayCopy(true), $column, $index_key); } /** @@ -115,4 +114,31 @@ abstract class BaseCollection extends \ArrayIterator { 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()); + } }