Spec-Zone.ru › CakePHP 4.3

Интерфейс ResultSetInterface

Описывает, как должна выглядеть коллекция результатов источника данных

Пространство имен: Cake\Datasource

Краткое описание методов

  • append() public

    Возвращает новую коллекцию, полученную в результате конкатенации списка элементов этой коллекции с переданным списком элементов

  • appendItem() public

    Добавляет один элемент, создавая новую коллекцию.

  • avg() public

    Возвращает среднее значение всех значений, извлечённых с помощью $path или из этой коллекции.

  • buffered() public

    Возвращает новую коллекцию, в которой операции, выполняемые этой коллекцией, буферизированы. Независимо от того, сколько раз будет итерироваться новая коллекция, эти операции будут выполнены только один раз.

  • cartesianProduct() public

    Создаёт новую коллекцию, являющуюся декартовым произведением текущей коллекции.

  • chunk() public

    Разбивает коллекцию на меньшие массивы заданного размера.

  • chunkWithKeys() public

    Разбивает коллекцию на меньшие массивы заданного размера.

  • combine() public

    Возвращает новую коллекцию, где значения извлекаются на основе пути к значению, а затем индексируются по пути к ключу. Дополнительно этот метод может создавать родительские группы на основе пути к свойству группы.

  • compile() public

    Итерируется по всем элементам этой коллекции один раз, выполняет все наложенные на них операции и, наконец, возвращает новую коллекцию с результатом. Это полезно для преобразования необратимых внутренних итераторов в коллекцию, которую можно перемотать и использовать несколько раз.

  • contains() public

    Возвращает true, если $value присутствует в этой коллекции. Сравнения производятся как по значению, так и по типу.

  • count() public

    Возвращает количество элементов в коллекции.

  • countBy() public

    Разбивает список на группы и возвращает количество элементов в каждой группе. Аналогично groupBy, но вместо возвращения списка значений возвращает подсчёт значений в данной группе.

  • countKeys() public

    Возвращает количество уникальных ключей в этом итераторе. Это равно количеству элементов, которые будет содержать коллекция после вызова toArray()

  • each() public

    Применяет обратный вызов к элементам в этой коллекции.

  • every() public

    Возвращает true, если все значения в этой коллекции проходят проверку на истинность, заданную в обратном вызове.

  • extract() public

    Возвращает новую коллекцию, содержащую значение столбца или свойства, найденное в каждом из элементов.

  • filter() public

    Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые проходят проверку на истинность. Только те значения, для которых обратный вызов возвращает true, будут присутствовать в результирующей коллекции.

  • first() public

    Возвращает первый результат в этой коллекции.

  • firstMatch() public

    Возвращает первый результат, соответствующий всем парам ключ-значение, перечисленным в условиях.

  • groupBy() public

    Разбивает коллекцию на наборы, сгруппированные по результату применения каждого значения к обратной функции. Если $callback является строкой, а не вызываемым объектом, группирует по свойству, названному $callback, для каждого из значений.

  • indexBy() public

    При заданном списке и функции обратного вызова, возвращающей ключ для каждого элемента в списке (или имя свойства), возвращает объект с индексом каждого элемента. Похоже на groupBy, но для случаев, когда вы знаете, что ваши ключи уникальны.

  • insert() public

    Возвращает новую коллекцию, содержащую каждый из элементов, найденных в $values, как свойство внутри соответствующих элементов в этой коллекции. Свойство, куда будут вставлены значения, описано параметром $path.

  • isEmpty() public

    Возвращает, есть ли элементы в этой коллекции.

  • jsonSerialize() public

    Возвращает данные, которые могут быть преобразованы в JSON. Это возвращает те же данные, что и toArray(), которые содержат только уникальные ключи.

  • last() public

    Возвращает последний результат в этой коллекции.

  • lazy() public

    Возвращает новую коллекцию, где любые операции, присоединённые к ней, гарантированно выполняются лениво. То есть элементы будут передаваться по одному.

  • listNested() public

    Возвращает новую коллекцию с каждым из элементов этой коллекции после выравнивания древовидной структуры. Древовидная структура определяется вложенностью элементов под ключом с известным именем. Указать такое имя можно с помощью параметра '$nestingKey'.

  • map() public

    Возвращает другую коллекцию после изменения каждого из значений в этой с помощью предоставленной вызываемой функции.

  • match() public

    Просматривает каждое значение в списке, возвращая коллекцию со всеми значениями, содержащими все пары ключ-значение, перечисленные в $conditions.

  • max() public

    Возвращает самый верхний элемент в этой коллекции после сортировки по свойству. Проверьте метод sortBy для получения информации о функции обратного вызова и параметрах $sort.

  • median() public

    Возвращает медиану всех значений, извлечённых с помощью $path или из этой коллекции.

  • min() public

    Возвращает самый нижний элемент в этой коллекции после сортировки по свойству. Проверьте метод sortBy для получения информации о функции обратного вызова и параметрах $sort.

  • nest() public

    Возвращает новую коллекцию, где значения вложены в древовидную структуру на основе пути к свойству id и пути к свойству родительского id.

  • prepend() public

    Добавляет набор элементов в начало коллекции, создавая новую коллекцию.

  • prependItem() public

    Добавляет один элемент в начало, создавая новую коллекцию.

  • reduce() public

    Сворачивает значения в этой коллекции в одно значение, как результат применения функции обратного вызова ко всем элементам. $zero — начальное состояние свертки, а каждый последующий шаг должен возвращаться функцией обратного вызова. Если $zero опущен, первое значение коллекции будет использовано вместо него, а свертка начнется со второго элемента.

  • reject() public

    Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые не проходят проверку на истинность. Это противоположно filter.

  • sample() public

    Возвращает новую коллекцию с максимальным $size случайных элементов из этой коллекции.

  • shuffle() public

    Возвращает новую коллекцию с элементами в случайном порядке, эта функция не сохраняет исходные ключи в коллекции.

  • skip() public

    Возвращает новую коллекцию, которая пропустит указанное количество элементов в начале итерации.

  • some() public

    Возвращает true, если хотя бы одно из значений в этой коллекции проходит проверку, заданную в обратном вызове.

  • sortBy() public

    Возвращает отсортированный итератор элементов в этой коллекции, отсортированных по возрастанию результатов выполнения каждого значения через обратный вызов. $callback также может быть строкой, представляющей имя столбца или свойства.

  • stopWhen() public

    Создаёт новую коллекцию, которая при итерации прекратит выдачу результатов, если предоставленное условие примет значение true.

  • sumOf() public

    Возвращает общую сумму всех значений, извлечённых с помощью $matcher или из этой коллекции.

  • take() public

    Возвращает новую коллекцию с максимальным количеством $size элементов в внутреннем порядке, в котором была создана эта коллекция. Если передаётся второй параметр, он определит, с какой позиции начинать взятие элементов.

  • takeLast() public

    Возвращает последние N элементов коллекции

  • through() public

    Пропускает эту коллекцию через вызываемую функцию в качестве первого аргумента. Это полезно для декорирования всей коллекции другим объектом.

  • toArray() public

    Возвращает массивное представление результатов

  • toList() public

    Возвращает массивное представление результатов с числовыми индексами. Это эквивалентно вызову toArray(false)

  • transpose() public

    Транспонирует строки и столбцы в столбцы и строки

  • unfold() public

    Создает новую коллекцию, где элементы являются результатом конкатенации списков элементов, сгенерированных функцией-трансформером, применённой к каждому элементу в исходной коллекции.

  • unwrap() public

    Возвращает ближайший вложенный итератор, который можно безопасно пройти, не теряя возможных преобразований. Это используется в основном для удаления пустых обёрток IteratorIterator, которые могут только замедлить процесс итерации.

  • zip() public

    Объединяет элементы этой коллекции с каждым из элементов переданных итерабельных, используя их позиционный индекс в качестве ссылки.

  • zipWith() public

    Объединяет элементы этой коллекции с каждым из элементов переданных итерабельных, используя их позиционный индекс в качестве ссылки.

Подробное описание методов

append() public

append(iterable $items): self

Возвращает новую коллекцию в результате конкатенации списка элементов в этой коллекции со списком переданных элементов

Параметры

iterable $items

Список элементов.

Возвращает

self

appendItem() public

appendItem(mixed $item, mixed $key = null): self

Добавляет один элемент, создавая новую коллекцию.

Параметры

mixed $item

Добавляемый элемент.

mixed $key optional

Ключ для добавления элемента. Если null, ключ будет сгенерирован.

Возвращает

self

avg() public

avg(callable|string|null $path = null): float|int|null

Возвращает среднее значение всех значений, извлеченных с помощью $path или из этой коллекции.

Пример:

$items = [
 ['invoice' => ['total' => 100]],
 ['invoice' => ['total' => 200]]
];

$total = (new Collection($items))->avg('invoice.total');

// Total: 150

$total = (new Collection([1, 2, 3]))->avg();
// Total: 2

Среднее пустого набора или 0 строк равно null. Коллекции с null значениями не считаются пустыми.

Параметры

callable|string|null $path optional

Имя свойства для суммирования или функция, которая возвращает значение свойства для суммирования. Если значение не передано, будет использована функция тождества.

Возвращает

float|int|null

buffered() public

buffered(): self

Возвращает новую коллекцию, в которой выполняются операции, производимые этой коллекцией. Независимо от того, сколько раз новая коллекция итерируется, эти операции будут выполняться только один раз.

Это также можно использовать для того, чтобы сделать любой необратимый итератор обратимым.

Возвращает

self

cartesianProduct() public

cartesianProduct(callable|null $operation = null, callable|null $filter = null): self

Создает новую коллекцию, которая является декартовым произведением текущей коллекции.

Для создания декартова произведения коллекция должна содержать данные одной размерности.

Пример

$collection = new Collection([['A', 'B', 'C'], [1, 2, 3]]);
$result = $collection->cartesianProduct()->toArray();
$expected = [
    ['A', 1],
    ['A', 2],
    ['A', 3],
    ['B', 1],
    ['B', 2],
    ['B', 3],
    ['C', 1],
    ['C', 2],
    ['C', 3],
];

Параметры

callable|null $operation optional

Выполняемый код, позволяющий настроить результат произведения.

callable|null $filter optional

Функция фильтрации, которая должна возвращать true, чтобы результат стал частью конечных результатов.

Возвращает

self

chunk() public

chunk(int $chunkSize): self

Разбивает коллекцию на меньшие массивы заданного размера.

Пример:

$items [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
$chunked = (new Collection($items))->chunk(3)->toList();
// Returns [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]

Параметры

int $chunkSize

Максимальный размер каждого фрагмента.

Возвращает

self

chunkWithKeys() public

chunkWithKeys(int $chunkSize, bool $keepKeys = true): self

Разбивает коллекцию на меньшие массивы заданного размера.

Пример:

$items ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5, 'f' => 6];
$chunked = (new Collection($items))->chunkWithKeys(3)->toList();
// Returns [['a' => 1, 'b' => 2, 'c' => 3], ['d' => 4, 'e' => 5, 'f' => 6]]

Параметры

int $chunkSize

Максимальный размер каждого фрагмента.

bool $keepKeys optional

Если ключи массива должны быть сохранены.

Возвращает

self

combine() public

combine(callable|string $keyPath, callable|string $valuePath, callable|string|null $groupPath = null): self

Возвращает новую коллекцию, где значения извлекаются на основе пути к значению, а затем индексируются путем к ключу. Этот метод также может создавать родительские группы на основе пути к свойству группы.

Примеры:

$items = [
 ['id' => 1, 'name' => 'foo', 'parent' => 'a'],
 ['id' => 2, 'name' => 'bar', 'parent' => 'b'],
 ['id' => 3, 'name' => 'baz', 'parent' => 'a'],
];

$combined = (new Collection($items))->combine('id', 'name');

// Result will look like this when converted to array
[
 1 => 'foo',
 2 => 'bar',
 3 => 'baz',
];

$combined = (new Collection($items))->combine('id', 'name', 'parent');

// Result will look like this when converted to array
[
 'a' => [1 => 'foo', 3 => 'baz'],
 'b' => [2 => 'bar']
];

Параметры

callable|string $keyPath

Путь к имени столбца для индексации или функция, возвращающая индексный ключ из предоставленного элемента.

callable|string $valuePath

Путь к имени столбца для использования в качестве значения массива или функция, возвращающая значение из предоставленного элемента.

callable|string|null $groupPath optional

Путь к имени столбца для использования в качестве родительского группировочного ключа или функция, возвращающая ключ из предоставленного элемента.

Возвращает

self

compile() public

compile(bool $keepKeys = true): self

Итерирует все элементы в этой коллекции один раз, выполняет все стоповые операции с ними и, наконец, возвращает новую коллекцию с результатом. Это полезно для преобразования необратимых внутренних итераторов в коллекцию, которую можно перематывать и использовать несколько раз.

Распространенный случай использования — повторное использование одной и той же переменной для вычисления различных данных. В таких случаях может быть полезно и эффективнее сначала скомпилировать коллекцию, а затем применить к ней дополнительные операции.

Пример:

$collection->map($mapper)->sortBy('age')->extract('name');
$compiled = $collection->compile();
$isJohnHere = $compiled->some($johnMatcher);
$allButJohn = $compiled->filter($johnMatcher);

В примере выше, если бы коллекция не была скомпилирована предварительно, итерации для map, sortBy и extract были бы выполнены дважды: один раз для получения $isJohnHere и один раз для $allButJohn.

Можно рассматривать этот метод как способ создания контрольных точек для сложных вычислений в коллекции.

Параметры

bool $keepKeys optional

Использовать ли ключи, возвращаемые этой коллекцией, как ключи массива. Имейте в виду, что для итераторов допустимо возвращать один и тот же ключ для разных элементов. Установка этого значения в false может помочь получить все элементы, если ключи не важны в результате.

Возвращает

self

contains() public

contains(mixed $value): bool

Возвращает true, если $value присутствует в этой коллекции. Сравнения выполняются по значению и типу.

Параметры

mixed $value

Проверяемое значение.

Возвращает

bool

count() public

count(): int

Возвращает количество элементов в коллекции.

ПРЕДУПРЕЖДЕНИЯ:

Изменяет текущую позицию итератора:

Вызов этого метода одновременно с итерацией этой коллекции, например, в цикле foreach, приведет к неопределенному поведению. Избегайте этого.

Потребляет все элементы для коллекций NoRewindIterator:

В некоторых типах коллекций вызов этого метода может сделать их неиспользуемыми. То есть, вы не сможете извлечь из них элементы или итерировать их.

Конкретно, любые коллекции, оборачивающие генератор (функцию с оператором yield) или небуферизованный курсор базы данных, не будут принимать другие вызовы функций после вызова count() на них.

Создайте новую коллекцию с помощью метода buffered(), чтобы обойти эту проблему.

Может сообщать о большем количестве элементов, чем уникальных ключей:

Любая коллекция, созданная путем объединения коллекций или имеющая внутренние итераторы, возвращающие дублирующиеся ключи, сообщит о большем количестве элементов с помощью этой функции, чем фактическое количество элементов при преобразовании коллекций в массив с ключами. Это потому, что дублирующиеся ключи будут сведены к одному в конечном массиве, в то время как этот метод подсчета заботится только о количестве элементов после преобразования в обычный список.

Если вам нужен подсчет элементов с учетом ключей (подсчет уникальных ключей), вы можете вызвать countKeys().

Возвращает

int

countBy() public

countBy(callable|string $path): self

Сортирует список по группам и возвращает количество элементов в каждой группе. Аналогично groupBy, но вместо возвращения списка значений возвращает количество значений в этой группе.

Когда $callback — строка, она должна быть именем свойства для извлечения или разделителем точек свойств, которые нужно отслеживать, чтобы получить последнее в пути.

Пример:

$items = [
 ['id' => 1, 'name' => 'foo', 'parent_id' => 10],
 ['id' => 2, 'name' => 'bar', 'parent_id' => 11],
 ['id' => 3, 'name' => 'baz', 'parent_id' => 10],
];

$group = (new Collection($items))->countBy('parent_id');

// Or
$group = (new Collection($items))->countBy(function ($e) {
 return $e['parent_id'];
});

// Result will look like this when converted to array
[
 10 => 2,
 11 => 1
];

Параметры

callable|string $path

Имя столбца для индексации или функция, возвращающая значение. или функция, возвращающая индексный ключ из предоставленного элемента

Возвращает

self

countKeys() public

countKeys(): int

Возвращает количество уникальных ключей в этой итерации. Это то же самое, что и количество элементов, которые будет содержать коллекция после вызова toArray().

Этот метод имеет ряд ограничений. Подробнее см. CollectionInterface::count().

Возвращает

int

См. также

\Cake\Collection\CollectionInterface::count()

each() public

each(callable $callback): $this

Применяет обратный вызов к элементам в этом наборе.

Пример:

$collection = (new Collection($items))->each(function ($value, $key) {
 echo "Element $key: $value";
});

Параметры

callable $callback

Обратный вызов, который будет выполнен для каждого элемента в наборе.

Возвращает

$this

every() public

every(callable $callback): bool

Возвращает true, если все значения в этом наборе проходят проверку, заданную в обратном вызове.

Обратный вызов получает значение и ключ тестируемого элемента и должен возвращать true, если проверка пройдена.

Пример:

$overTwentyOne = (new Collection([24, 45, 60, 15]))->every(function ($value, $key) {
 return $value > 21;
});

Пустые наборы всегда возвращают true.

Параметры

callable $callback

функция обратного вызова

Возвращает

bool

extract() public

extract(callable|string $path): self

Возвращает новый набор, содержащий значение столбца или свойства, найденное в каждом из элементов.

Матчер может быть строкой со именем свойства для извлечения или путем свойств, разделенных точкой, по которому необходимо пройти, чтобы получить последнее в пути.

Если столбец или свойство не могут быть найдены для определенного элемента в наборе, в этом положении устанавливается null.

Пример:

Извлечь имя пользователя для всех комментариев в массиве:

$items = [
 ['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']],
 ['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']]
];
$extracted = (new Collection($items))->extract('comment.user.name');

// Result will look like this when converted to array
['Mark', 'Renan']

Также возможно извлечь уплощённый набор из вложенных свойств

$items = [
     ['comment' => ['votes' => [['value' => 1], ['value' => 2], ['value' => 3]]],
     ['comment' => ['votes' => [['value' => 4]]
];
$extracted = (new Collection($items))->extract('comment.votes.{*}.value');

// Result will contain
[1, 2, 3, 4]

Параметры

callable|string $path

Путь, разделенный точкой, столбца для следования, чтобы возвратить последний элемент или вызываемый объект, который позаботится об этом.

Возвращает

self

filter() public

filter(callable|null $callback = null): self

Просматривает каждое значение в наборе и возвращает другой набор со всеми значениями, которые проходят проверку. В результирующем наборе будут только те значения, для которых обратный вызов возвращает true.

Каждый раз, когда обратный вызов выполняется, он получает значение элемента в текущей итерации, ключ элемента и этот набор в качестве аргументов в указанном порядке.

Пример:

Фильтрация нечетных чисел в массиве, в конце только значение 2 будет присутствовать в результирующем наборе:

$collection = (new Collection([1, 2, 3]))->filter(function ($value, $key) {
 return $value % 2 === 0;
});

Параметры

callable|null $callback optional

метод, который получит каждый из элементов и вернет true, если они должны быть в результирующем наборе. Если оставлено пустым, будет использован обратный вызов, фильтрующий ложные значения.

Возвращает

self

first() public

first(): mixed

Возвращает первый результат в этом наборе

Возвращает

mixed

firstMatch() public

firstMatch(array $conditions): mixed

Возвращает первый результат, соответствующий всем парам ключ-значение, перечисленным в условиях.

Параметры

array $conditions

список пар ключ-значение условий, где ключ - путь к свойству, принятому Collection::extract, а значение - условие, с которым будет сопоставляться каждый элемент.

Возвращает

mixed

См. также

\Cake\Collection\CollectionInterface::match()

groupBy() public

groupBy(callable|string $path): self

Разбивает набор на группы, сгруппированные по результатам выполнения каждого значения через обратный вызов. Если $callback является строкой вместо вызываемого объекта, группирует по свойству, названному $callback в каждом из значений.

Когда $callback является строкой, это должно быть имя свойства для извлечения или путь к свойствам, разделенный точкой, который должен быть пройден, чтобы получить последнее в пути.

Пример:

$items = [
 ['id' => 1, 'name' => 'foo', 'parent_id' => 10],
 ['id' => 2, 'name' => 'bar', 'parent_id' => 11],
 ['id' => 3, 'name' => 'baz', 'parent_id' => 10],
];

$group = (new Collection($items))->groupBy('parent_id');

// Or
$group = (new Collection($items))->groupBy(function ($e) {
 return $e['parent_id'];
});

// Result will look like this when converted to array
[
 10 => [
     ['id' => 1, 'name' => 'foo', 'parent_id' => 10],
     ['id' => 3, 'name' => 'baz', 'parent_id' => 10],
 ],
 11 => [
     ['id' => 2, 'name' => 'bar', 'parent_id' => 11],
 ]
];

Параметры

callable|string $path

Имя столбца для группировки или обратный вызов, возвращающий значение. или функция, возвращающая ключ группировки из предоставленного элемента

Возвращает

self

indexBy() public

indexBy(callable|string $path): self

Принимая список и функцию обратного вызова, которая возвращает ключ для каждого элемента в списке (или имя свойства), возвращает объект с индексом каждого элемента. Также как groupBy, но для случая, когда вы знаете, что ваши ключи уникальны.

Когда $callback является строкой, это должно быть имя свойства для извлечения или путь к свойствам, разделенный точкой, который должен быть пройден, чтобы получить последнее в пути.

Пример:

$items = [
 ['id' => 1, 'name' => 'foo'],
 ['id' => 2, 'name' => 'bar'],
 ['id' => 3, 'name' => 'baz'],
];

$indexed = (new Collection($items))->indexBy('id');

// Or
$indexed = (new Collection($items))->indexBy(function ($e) {
 return $e['id'];
});

// Result will look like this when converted to array
[
 1 => ['id' => 1, 'name' => 'foo'],
 3 => ['id' => 3, 'name' => 'baz'],
 2 => ['id' => 2, 'name' => 'bar'],
];

Параметры

callable|string $path

Имя столбца для индексирования или обратный вызов, возвращающий значение. или функция, возвращающая ключ индексирования из предоставленного элемента

Возвращает

self

insert() public

insert(string $path, mixed $values): self

Возвращает новый набор, содержащий каждый из элементов, найденных в $values в качестве свойства внутри соответствующих элементов в этом наборе. Свойство, в которое будут вставлены значения, описывается параметром $path.

Путь $path может быть строкой с именем свойства или путем свойств, разделенных точкой, который должен быть пройден, чтобы получить последнее в пути.

Если столбец или свойство не могут быть найдены для определенного элемента в наборе как часть пути, элемент останется неизменным.

Пример:

Вставить возраста в набор, содержащий пользователей:

$items = [
 ['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']],
 ['comment' => ['body' => 'awesome', 'user' => ['name' => 'Renan']]
];
$ages = [25, 28];
$inserted = (new Collection($items))->insert('comment.user.age', $ages);

// Result will look like this when converted to array
[
 ['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark', 'age' => 25]],
 ['comment' => ['body' => 'awesome', 'user' => ['name' => 'Renan', 'age' => 28]]
];

Параметры

string $path

строка, разделенная точками, символизирующая путь, по которому нужно следовать внутри иерархии каждого значения, чтобы значение можно было вставить

mixed $values

Значения, которые должны быть вставлены по указанному пути, значения сопоставляются с элементами в этом наборе по их позиционному индексу.

Возвращает

self

isEmpty() public

isEmpty(): bool

Возвращает, есть ли элементы в этом наборе

Пример:

$items [1, 2, 3];
(new Collection($items))->isEmpty(); // false
(new Collection([]))->isEmpty(); // true

Возвращает

bool

jsonSerialize() public

jsonSerialize(): array

Возвращает данные, которые можно преобразовать в JSON. Это возвращает те же данные, что и toArray(), которые содержат только уникальные ключи.

Часть интерфейса JsonSerializable.

Возвращает

array

last() public

last(): mixed

Возвращает последний результат в этом наборе

Возвращает

mixed

lazy() public

lazy(): self

Возвращает новый набор, где любые операции, присоединенные к нему, гарантированно выполняются лениво. То есть элементы будут возвращаться по одному.

Ленивый набор можно итерировать только один раз. Вторая попытка приводит к ошибке.

Возвращает

self

listNested() public

listNested(string|int $order = 'desc', callable|string $nestingKey = 'children'): self

Возвращает новый набор с каждым элементом этого набора после уплощения структуры дерева. Структура дерева определяется вложением элементов под ключом с известным именем. Это имя можно указать с помощью параметра '$nestingKey'.

По умолчанию все элементы дерева, следующие по алгоритму обхода в глубину, будут возвращены, то есть элементы от верхнего родителя до листьев для каждой ветви.

Можно вернуть все элементы снизу вверх с помощью алгоритма обхода в ширину, передав параметр '$dir' со значением 'asc'. То есть, он вернет все элементы для той же глубины дерева сначала и снизу вверх.

Наконец, вы можете указать, чтобы получить только набор с листовыми узлами в структуре дерева. Вы делаете это, передав 'leaves' в первый аргумент.

Возможные значения для первого аргумента являются псевдонимами для следующих констант, и допустимо передать их вместо псевдонима:

  • desc: RecursiveIteratorIterator::SELF_FIRST
  • asc: RecursiveIteratorIterator::CHILD_FIRST
  • leaves: RecursiveIteratorIterator::LEAVES_ONLY

Пример:

$collection = new Collection([
 ['id' => 1, 'children' => [['id' => 2, 'children' => [['id' => 3]]]]],
 ['id' => 4, 'children' => [['id' => 5]]]
]);
$flattenedIds = $collection->listNested()->extract('id'); // Yields [1, 2, 3, 4, 5]

Параметры

string|int $order optional

Порядок возврата элементов

callable|string $nestingKey optional

Имя ключа, под которым вложены дочерние элементы, или вызываемая функция, которая вернет список дочерних элементов.

Возвращает

self

map() public

map(callable $callback): self

Возвращает другую коллекцию после изменения каждого из значений в этой коллекции с использованием предоставленной вызываемой функции.

Каждый раз при выполнении обратного вызова он будет получать значение элемента в текущей итерации, ключ элемента и эту коллекцию в качестве аргументов в указанном порядке.

Пример:

Получение коллекции булевых значений, где значение true указывает, является ли человек женщиной:

$collection = (new Collection($people))->map(function ($person, $key) {
 return $person->gender === 'female';
});

Параметры

callable $callback

метод, который будет получать каждый из элементов и возвращать новое значение для ключа, который итеративно обрабатывается

Возвращает

self

match() public

match(array $conditions): self

Просматривает каждое значение в списке, возвращая коллекцию всех значений, содержащих все пары ключ-значение, перечисленные в $conditions.

Пример:

$items = [
 ['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']],
 ['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']]
];

$extracted = (new Collection($items))->match(['user.name' => 'Renan']);

// Result will look like this when converted to array
[
 ['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']]
]

Параметры

array $conditions

список пар ключ-значение условий, где ключ — путь к свойству, принимаемый `Collection::extract`, а значение — условие, с которым будет сопоставляться каждый элемент

Возвращает

self

max() public

max(callable|string $path, int $sort = \SORT_NUMERIC): mixed

Возвращает верхний элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о вызываемой функции и параметре $sort.

Примеры:

// For a collection of employees
$max = $collection->max('age');
$max = $collection->max('user.salary');
$max = $collection->max(function ($e) {
 return $e->get('user')->get('salary');
});

// Display employee name
echo $max->name;

Параметры

callable|string $path

Имя столбца для сортировки или вызываемая функция, которая возвращает значение.

int $sort optional

Тип сортировки, один из SORT_STRING, SORT_NUMERIC или SORT_NATURAL

Возвращает

mixed

См. также

\Cake\Collection\CollectionInterface::sortBy()

median() public

median(callable|string|null $path = null): float|int|null

Возвращает медиану всех значений, извлеченных с помощью $path, или этой коллекции.

Пример:

$items = [
 ['invoice' => ['total' => 400]],
 ['invoice' => ['total' => 500]]
 ['invoice' => ['total' => 100]]
 ['invoice' => ['total' => 333]]
 ['invoice' => ['total' => 200]]
];

$total = (new Collection($items))->median('invoice.total');

// Total: 333

$total = (new Collection([1, 2, 3, 4]))->median();
// Total: 2.5

Медиана пустого набора или 0 строк — null. Коллекции с null значениями не считаются пустыми.

Параметры

callable|string|null $path optional

Имя свойства для суммирования или функция. Если значение не передано, будет использована функция идентичности, которая вернёт значение свойства для суммирования.

Возвращает

float|int|null

min() public

min(callable|string $path, int $sort = \SORT_NUMERIC): mixed

Возвращает нижний элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о вызываемой функции и параметре $sort.

Примеры:

// For a collection of employees
$min = $collection->min('age');
$min = $collection->min('user.salary');
$min = $collection->min(function ($e) {
 return $e->get('user')->get('salary');
});

// Display employee name
echo $min->name;

Параметры

callable|string $path

Имя столбца для сортировки или вызываемая функция, которая возвращает значение.

int $sort optional

Тип сортировки, один из SORT_STRING, SORT_NUMERIC или SORT_NATURAL

Возвращает

mixed

См. также

\Cake\Collection\CollectionInterface::sortBy()

nest() public

nest(callable|string $idPath, callable|string $parentPath, string $nestingKey = 'children'): self

Возвращает новую коллекцию, где значения вложены в структуру дерева на основе пути к свойству id и пути к свойству родительского id.

Параметры

callable|string $idPath

путь к имени столбца, используемый для определения того, является ли элемент родителем другого

callable|string $parentPath

путь к имени столбца, используемый для определения того, является ли элемент дочерним другим

string $nestingKey optional

Имя ключа, под которым дочерние элементы вложены

Возвращает

self

prepend() public

prepend(mixed $items): self

Добавляет набор элементов в начало коллекции, создавая новую коллекцию.

Параметры

mixed $items

Элементы, которые нужно добавить в начало.

Возвращает

self

prependItem() public

prependItem(mixed $item, mixed $key = null): self

Добавляет единственный элемент в начало, создавая новую коллекцию.

Параметры

mixed $item

Элемент, который нужно добавить в начало.

mixed $key optional

Ключ для добавления элемента. Если null, ключ будет сгенерирован.

Возвращает

self

reduce() public

reduce(callable $callback, mixed $initial = null): mixed

Складывает значения в этой коллекции в одно значение, как результат применения функции обратного вызова ко всем элементам. $zero — начальное состояние сокращения, и каждый последующий шаг должен возвращаться функцией обратного вызова. Если $zero опущен, первое значение коллекции будет использовано вместо него, и сокращение начнётся со второго элемента.

Параметры

callable $callback

Функция обратного вызова, которая будет вызываться

mixed $initial optional

Состояние сокращения

Возвращает

mixed

reject() public

reject(callable $callback): self

Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые не проходят проверку на истинность. Это противоположно filter.

Каждый раз при выполнении обратного вызова он будет получать значение элемента в текущей итерации, ключ элемента и эту коллекцию в качестве аргументов в указанном порядке.

Пример:

Фильтрация чётных чисел в массиве, в итоге в результирующей коллекции будут только значения 1 и 3:

$collection = (new Collection([1, 2, 3]))->reject(function ($value, $key) {
 return $value % 2 === 0;
});

Параметры

callable $callback

метод, который будет получать каждый из элементов и возвращать true, если они должны быть исключены из результирующей коллекции.

Возвращает

self

sample() public

sample(int $length = 10): self

Возвращает новую коллекцию с максимальным количеством $size случайных элементов из этой коллекции.

Параметры

int $length optional

максимальное количество элементов для случайного выбора из этой коллекции

Возвращает

self

shuffle() public

shuffle(): self

Возвращает новую коллекцию с элементами в случайном порядке, эта функция не сохраняет оригинальные ключи в коллекции.

Возвращает

self

skip() public

skip(int $length): self

Возвращает новую коллекцию, которая пропустит указанное количество элементов в начале итерации.

Параметры

int $length

Количество элементов, которые нужно пропустить.

Возвращает

self

some() public

some(callable $callback): bool

Возвращает true, если какие-либо значения в этой коллекции проходят проверку на истинность, заданную в обратном вызове.

Обратный вызов получает значение и ключ тестируемого элемента и должен вернуть true, если тест пройден.

Пример:

$hasYoungPeople = (new Collection([24, 45, 15]))->some(function ($value, $key) {
 return $value < 21;
});

Параметры

callable $callback

функция обратного вызова

Возвращает

bool

sortBy() public

sortBy(callable|string $path, int $order = SORT_DESC, int $sort = \SORT_NUMERIC): self

Возвращает отсортированный итератор элементов в этом наборе, ранжированный в порядке возрастания по результатам выполнения каждого значения через обратный вызов. $callback также может быть строкой, представляющей имя столбца или свойства.

Обратный вызов получит в качестве первого аргумента каждый из элементов в $items, а значение, возвращаемое обратным вызовом, будет использовано в качестве значения для сортировки такого элемента. Обратите внимание, что функция обратного вызова может быть вызвана более одного раза на элемент.

Пример:

$items = $collection->sortBy(function ($user) {
 return $user->age;
});

// alternatively
$items = $collection->sortBy('age');

// or use a property path
$items = $collection->sortBy('department.name');

// output all user name order by their age in descending order
foreach ($items as $user) {
 echo $user->name;
}

Параметры

callable|string $path

Имя столбца для сортировки или обратный вызов, возвращающий значение.

int $order необязательный

Порядок сортировки, либо SORT_DESC, либо SORT_ASC

int $sort необязательный

Тип сортировки, один из SORT_STRING, SORT_NUMERIC или SORT_NATURAL

Возвращает

self

stopWhen() public

stopWhen(callable|array $condition): self

Создаёт новый набор, который при итерации прекратит выдавать результаты, если предоставленное условие примет значение true.

Это полезно для работы с бесконечными итераторами или любым генератором, который может начать возвращать недействительные элементы в определённый момент. Например, при чтении строк из потока файла вы можете остановить итерацию после достижения определённого значения.

Пример:

Получение массива строк в файле CSV до тех пор, пока столбец со временем не будет меньше даты

$lines = (new Collection($fileLines))->stopWhen(function ($value, $key) {
 return (new DateTime($value))->format('Y') < 2012;
})
->toArray();

Получение элементов до тех пор, пока не будет найден первый элемент без утверждения:

$comments = (new Collection($comments))->stopWhen(['is_approved' => false]);

Параметры

callable|array $condition

метод, который получит каждый из элементов и вернёт true, когда итерация должна быть остановлена. Если массив, он будет интерпретироваться как список условий, где ключ — путь к свойству, как в Collection::extract, а значение — условие, с которым будет сопоставляться каждый элемент.

Возвращает

self

sumOf() public

sumOf(callable|string|null $path = null): float|int

Возвращает общую сумму всех значений, извлечённых с помощью $matcher или из этого набора.

Пример:

$items = [
 ['invoice' => ['total' => 100]],
 ['invoice' => ['total' => 200]]
];

$total = (new Collection($items))->sumOf('invoice.total');

// Total: 300

$total = (new Collection([1, 2, 3]))->sumOf();
// Total: 6

Параметры

callable|string|null $path необязательный

Имя свойства для суммирования или функция. Если значение не передано, будет использована функция идентичности. которая вернёт значение свойства для суммирования.

Возвращает

float|int

take() public

take(int $length = 1, int $offset = 0): self

Возвращает новый набор с максимальным количеством $size элементов в внутреннем порядке, в котором этот набор был создан. Если второй параметр передан, он определит, с какой позиции начинать взятие элементов.

Параметры

int $length необязательный

максимальное количество элементов, которые нужно взять из этого набора

int $offset необязательный

Позиционное смещение, с которого нужно взять элементы

Возвращает

self

takeLast() public

takeLast(int $length): self

Возвращает последние N элементов набора

Пример:

$items = [1, 2, 3, 4, 5];

$last = (new Collection($items))->takeLast(3);

// Result will look like this when converted to array
[3, 4, 5];

Параметры

int $length

Количество элементов в конце набора

Возвращает

self

through() public

through(callable $callback): self

Пропускает этот набор через вызываемый объект в качестве первого аргумента. Это полезно для декорирования всего набора другим объектом.

Пример:

$items = [1, 2, 3];
$decorated = (new Collection($items))->through(function ($collection) {
     return new MyCustomCollection($collection);
});

Параметры

callable $callback

Функция, которая примет этот набор в качестве первого аргумента.

Возвращает

self

toArray() public

toArray(bool $keepKeys = true): array

Возвращает массивное представление результатов

Параметры

bool $keepKeys необязательный

Следует ли использовать ключи, возвращаемые этим набором, как ключи массива. Имейте в виду, что для итераторов допустимо возвращать один и тот же ключ для разных элементов, установка этого значения в false может помочь получить все элементы, если ключи не важны в результате.

Возвращает

array

toList() public

toList(): array

Возвращает массивное представление результатов с численными индексами. Это эквивалентно вызову toArray(false)

Возвращает

array

transpose() public

transpose(): self

Транспонирует строки и столбцы в столбцы и строки

Пример:

$items = [
      ['Products', '2012', '2013', '2014'],
      ['Product A', '200', '100', '50'],
      ['Product B', '300', '200', '100'],
      ['Product C', '400', '300', '200'],
]

$transpose = (new Collection($items))->transpose()->toList();

// Returns
// [
//     ['Products', 'Product A', 'Product B', 'Product C'],
//     ['2012', '200', '300', '400'],
//     ['2013', '100', '200', '300'],
//     ['2014', '50', '100', '200'],
// ]

Возвращает

self

unfold() public

unfold(callable|null $callback = null): self

Создаёт новый набор, где элементы являются конкатенацией списков элементов, сгенерированных функцией преобразования, применённой к каждому элементу исходного набора.

Функция преобразования получит значение и ключ для каждого из элементов в наборе, в указанном порядке, и должна вернуть массив или объект Traversable, который может быть добавлен к окончательному результату.

Если функция преобразования не передана, будет использована функция "идентичности". Это полезно, когда каждый из элементов исходного набора является списком элементов, которые нужно добавить друг за другом.

Пример:

$items [[1, 2, 3], [4, 5]];
$unfold = (new Collection($items))->unfold(); // Returns [1, 2, 3, 4, 5]

Использование функции преобразования

$items [1, 2, 3];
$allItems = (new Collection($items))->unfold(function ($page) {
 return $service->fetchPage($page)->toArray();
});

Параметры

callable|null $callback необязательный

Функция, которая получит каждый из элементов в наборе и должна вернуть массив или объект Traversable

Возвращает

self

unwrap() public

unwrap(): Traversable

Возвращает ближайший вложенный итератор, который можно безопасно перебирать, не теряя возможных преобразований. Это используется в основном для удаления пустых обёрток IteratorIterator, которые могут только замедлить процесс итерации.

Возвращает

Traversable

zip() public

zip(iterable $items): self

Комбинирует элементы этого набора с каждым из элементов переданных итерируемых объектов, используя их позиционный индекс в качестве ссылки.

Пример:

$collection = new Collection([1, 2]);
$collection->zip([3, 4], [5, 6])->toList(); // returns [[1, 3, 5], [2, 4, 6]]

Параметры

iterable $items

Наборы для объединения.

Возвращает

self

zipWith() public

zipWith(iterable $items, callable $callback): self

Комбинирует элементы этого набора с каждым из элементов переданных итерируемых объектов, используя их позиционный индекс в качестве ссылки.

Результирующий элемент будет значением, возвращаемым функцией $callable.

Пример:

$collection = new Collection([1, 2]);
$zipped = $collection->zipWith([3, 4], [5, 6], function (...$args) {
  return array_sum($args);
});
$zipped->toList(); // returns [9, 12]; [(1 + 3 + 5), (2 + 4 + 6)]

Параметры

iterable $items

Наборы для объединения.

callable $callback

Функция, используемая для объединения элементов.

Возвращает

self

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.3/interface-Cake.Datasource.ResultSetInterface.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API