/**
* Apply a callback function on all elements in the collection and returns a new collection with the updated elements
*
- * @deprecated 2025.05 Use `array_map()` instead
- *
* @param callable $callback
* @return BaseCollection
* @see array_map()
*/
public function map(callable $callback): BaseCollection
{
- @trigger_error('`' . __METHOD__ . '()` is deprecated since 2025.05 and will be removed after 5 months, use `array_map()` instead.', E_USER_DEPRECATED);
-
$class = get_class($this);
return new $class(array_map($callback, $this->getArrayCopy()), $this->getTotalCount());
public function setSeen(): Notifications
{
- $class = get_class($this);
-
- return new $class(
- array_map(
- function (NotificationEntity $notification) {
- $notification->setSeen();
- },
- $this->getArrayCopy()
- ),
- $this->getTotalCount(),
- );
+ $notifications = $this->map(function (NotificationEntity $notification) {
+ $notification->setSeen();
+ });
+
+ if (!$notifications instanceof Notifications) {
+ // Show the possible error explicitly
+ throw new \Exception(sprintf(
+ 'BaseCollection::map() should return instance of %s, but returns %s instead.',
+ Notifications::class,
+ get_class($notifications),
+ ));
+ }
+
+ return $notifications;
}
public function setDismissed(): Notifications
{
- $class = get_class($this);
-
- return new $class(
- array_map(
- function (NotificationEntity $notification) {
- $notification->setDismissed();
- },
- $this->getArrayCopy(),
- ),
- $this->getTotalCount(),
- );
-
+ $notifications = $this->map(function (NotificationEntity $notification) {
+ $notification->setDismissed();
+ });
+
+ if (!$notifications instanceof Notifications) {
+ // Show the possible error explicitly
+ throw new \Exception(sprintf(
+ 'BaseCollection::map() should return instance of %s, but returns %s instead.',
+ Notifications::class,
+ get_class($notifications),
+ ));
+ }
+
+ return $notifications;
}
public function countUnseen(): int
public function setSeen(): Notifies
{
- $class = get_class($this);
+ $notifies = $this->map(function (NotifyEntity $notify) {
+ $notify->setSeen();
+ });
- return new $class(array_map(
- function (NotifyEntity $notify) {
- $notify->setSeen();
- },
- $this->getArrayCopy()), $this->getTotalCount(),
- );
+ if (!$notifies instanceof Notifies) {
+ // Show the possible error explicitly
+ throw new \Exception(sprintf(
+ 'BaseCollection::map() should return instance of %s, but returns %s instead.',
+ Notifies::class,
+ get_class($notifies),
+ ));
+ }
+
+ return $notifies;
}
}
public function map(callable $callback): ProfileFields
{
- $class = get_class($this);
-
- return new $class(array_map($callback, $this->getArrayCopy()), $this->getTotalCount());
+ $profileFields = parent::map($callback);
+
+ if (!$profileFields instanceof ProfileFields) {
+ // Show the possible error explicitly
+ throw new \Exception(sprintf(
+ 'BaseCollection::map() should return instance of %s, but returns %s instead.',
+ ProfileFields::class,
+ get_class($profileFields),
+ ));
+ }
+
+ return $profileFields;
}
public function filter(?callable $callback = null, int $flag = 0): ProfileFields
{
- $class = get_class($this);
-
- return new $class(array_filter($this->getArrayCopy(), $callback, $flag));
+ return new self(array_filter($this->getArrayCopy(), $callback, $flag));
}
}