Метод forAll
Метод forAll класса ArrayCollection
применяет переданную callback-функцию к каждому
элементу коллекции. Первым параметром передаётся
замыкание, которое принимает ключ и значение
текущего элемента. Метод возвращает true,
если callback вернул true для всех элементов,
и false - если хотя бы для одного элемента
callback вернул false.
Метод удобно использовать для проверки условий сразу по всем элементам коллекции, например, чтобы убедиться, что все сущности активны или что все числа положительные.
Синтаксис
public function forAll(Closure $p): bool
Пример
Давайте создадим коллекцию чисел и проверим, что все элементы положительные:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection([1, 2, 3, 4, 5]);
$res = $collection->forAll(function ($key, $value) {
return $value > 0;
});
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим коллекцию, в которой есть отрицательное число:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection([1, 2, -3, 4, 5]);
$res = $collection->forAll(function ($key, $value) {
return $value > 0;
});
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Пример
Давайте проверим коллекцию сущностей на то, что все они активны:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
use App\Entity\Article;
class ArticleController extends AbstractController
{
public function index(): Response
{
$article1 = new Article();
$article1->setTitle('article 1');
$article1->setActive(true);
$article2 = new Article();
$article2->setTitle('article 2');
$article2->setActive(true);
$collection = new ArrayCollection([$article1, $article2]);
$res = $collection->forAll(function ($key, Article $article) {
return $article->isActive() === true;
});
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Смотрите также
-
класс
ArrayCollection,
который представляет собой коллекцию элементов -
метод
filter,
который фильтрует элементы коллекции -
метод
map,
который применяет функцию к каждому элементу -
метод
exists,
который проверяет наличие элемента в коллекции