Spec-Zone.ru › CakePHP 4.4

Класс ResultSetDecorator

Обобщенный декоратор ResultSet. Это позволит любому итерируемому объекту отображаться как результат базы данных

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

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

  • __construct() public

    Конструктор. Вы можете указать массив или любой итерируемый объект

  • __debugInfo() public

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

  • __serialize() public

    Возвращает массив для сериализации этого объекта.

  • __unserialize() public

    Пересоздаёт экземпляр Collection.

  • _createMatcherFilter() protected

    Возвращает вызываемый объект, который получает значение и возвращает, соответствует ли оно определённому условию.

  • _extract() protected

    Возвращает столбец из $data, который можно извлечь, итерируясь по именам столбцов, содержащимся в $path. Он вернёт массивы для элементов, представленных с помощью {*}

  • _propertyExtractor() protected

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

  • _simpleExtract() protected

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

  • 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 или из этой коллекции.

END_OF_DOCUMENT_MARKER
  • min() public

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

  • nest() public

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

  • newCollection() protected

    Возвращает новый набор.

  • optimizeUnwrap() protected

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

  • prepend() public

    Добавляет набор элементов в начало набора, создавая новый набор.

  • prependItem() public

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

  • reduce() public

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

  • reject() public

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

  • sample() public

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

  • serialize() public

    Возвращает строковое представление этого объекта, которое можно использовать для его восстановления.

  • 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

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

  • unserialize() public

    Десериализует переданную строку и восстанавливает экземпляр Collection.

  • unwrap() public

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

  • zip() public

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

  • zipWith() public

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

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

__construct() public

__construct(iterable $items)

Конструктор. Вы можете передать массив или любой итерируемый объект

Параметры

iterable $items

Элементы.

Исключения

InvalidArgumentException
Если передан неверный тип для элементов.

__debugInfo() public

__debugInfo(): array<string, mixed>

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

Возвращает

array<string, mixed>

__serialize() public

__serialize(): array

Возвращает массив для сериализации этого объекта.

Возвращает

array

__unserialize() public

__unserialize(array $data): void

Восстанавливает экземпляр Collection.

Параметры

array $data

Массив данных.

Возвращает

void

_createMatcherFilter() protected

_createMatcherFilter(array $conditions): Closure

Возвращает вызываемый объект, который принимает значение и возвращает, соответствует ли оно определённому условию.

Параметры

array $conditions

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

Возвращает

Closure

_extract() protected

_extract(ArrayAccess|array $data, array<string> $parts): mixed

Возвращает столбец из $data, который может быть извлечён, итерируя по именам столбцов, содержащихся в $path. Возвращает массивы для элементов, представленных {*}

Параметры

ArrayAccess|array $data

Данные.

array<string> $parts

Путь для извлечения.

Возвращает

mixed

_propertyExtractor() protected

_propertyExtractor(callable|string $path): callable

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

Параметры

callable|string $path

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

Возвращает

callable

_simpleExtract() protected

_simpleExtract(ArrayAccess|array $data, array<string> $parts): mixed

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

Параметры

ArrayAccess|array $data

Данные.

array<string> $parts

Путь для извлечения.

Возвращает

mixed

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

Делает этот объект счётным.

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

Возвращает

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, если они должны быть в результирующем наборе. Если оставлено null, будет использован обратный вызов, который отфильтровывает ложные значения.

Возвращает

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.

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

Возвратить все элементы снизу вверх можно, используя обход в ширину (Breadth First Search), передав параметр $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

newCollection() protected

newCollection(mixed ...$args): Cake\Collection\CollectionInterface

Возвращает новую коллекцию.

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

Параметры

mixed ...$args

Аргументы конструктора.

Возвращаемое значение

Cake\Collection\CollectionInterface

optimizeUnwrap() protected

optimizeUnwrap(): iterable

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

Возвращаемое значение

iterable

prepend() public

prepend(mixed $items): self

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

Параметры

mixed $items

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

Возвращает

self

prependItem() public

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

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

Параметры

mixed $item

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

mixed $key необязательно

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

Возвращает

self

reduce() public

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

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

Параметры

callable $callback

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

mixed $initial необязательно

Состояние свертки

Возвращает

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 необязательно

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

Возвращает

self

serialize() public

serialize(): string

Возвращает строковое представление этого объекта, которое можно использовать для его восстановления

Возвращает

string

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

unserialize() public

unserialize(string $collection): void

Десериализует переданную строку и восстанавливает экземпляр Collection

Параметры

string $collection

Десериализованный набор

Возвращает

void

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.4/class-Cake.Datasource.ResultSetDecorator.html

Spec-Zone.ru

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