Spec-Zone.ru › CakePHP 4.2

Class ResultSetDecorator

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

Namespace: Cake\Datasource

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

  • __construct() public

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

  • __debugInfo() public

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

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

  • 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

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

  • unwrap() public

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

  • zip() public

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

  • zipWith() public

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

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

__construct() public

__construct(iterable $items)

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

Parameters

iterable $items

Элементы.

Throws

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

__debugInfo() public

__debugInfo(): array

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

Returns

array

_createMatcherFilter() protected

_createMatcherFilter(array $conditions): Closure

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

Parameters

array $conditions

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

Returns

Closure

_extract() protected

_extract(arrayArrayAccess $data, string[] $parts): mixed

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

Parameters

arrayArrayAccess $data

Данные.

string[] $parts

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

Returns

mixed

_propertyExtractor() protected

_propertyExtractor(string|callable $path): callable

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

Parameters

string|callable $path

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

Returns

callable

_simpleExtract() protected

_simpleExtract(arrayArrayAccess $data, string[] $parts): mixed

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

Parameters

arrayArrayAccess $data

Данные.

string[] $parts

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

Returns

mixed

append() public

append(iterable $items): self

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

Parameters

iterable $items

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

Returns

self

appendItem() public

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

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

Parameters

mixed $item

Элемент для добавления.

mixed $key optional

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

Returns

self

avg() public

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

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

Example:

$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 значениями не считаются пустыми.

Parameters

string|callable|null $path optional

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

Returns

float|int|null

buffered() public

buffered(): self

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

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

Returns

self

cartesianProduct() public

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

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

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

Example

$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],
];

Parameters

callable|null $operation optional

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

callable|null $filter optional

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

Returns

self

chunk() public

chunk(int $chunkSize): self

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

Example:

$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]]

Parameters

int $chunkSize

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

Returns

self

chunkWithKeys() public

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

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

Example:

$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]]

Parameters

int $chunkSize

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

bool $preserveKeys optional

Следует ли сохранять ключи массива

Returns

self

combine() public

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

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

Examples:

$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']
];

Parameters

callable|string $keyPath

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

callable|string $valuePath

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

callable|string|null $groupPath optional

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

Returns

self

compile() public

compile(bool $preserveKeys = true): self

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

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

Example:

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

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

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

Parameters

bool $preserveKeys optional

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

Returns

self

contains() public

contains(mixed $value): bool

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

Parameters

mixed $value

Значение для проверки.

Returns

bool

count() public

count(): int

Сделать этот объект подсчитываемым.

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

Returns

int

countBy() public

countBy(callable|string $path): self

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

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

Example:

$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
];

Parameters

callable|string $path

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

Returns

self

countKeys() public

countKeys(): int

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

Этот метод имеет ряд предостережений. Подробности см. в CollectionInterface::count()

Returns

int

See Also

\Cake\Collection\CollectionInterface::count()

each() public

each(callable $callback): $this

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

Example:

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

Parameters

callable $callback

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

Returns

$this

every() public

every(callable $callback): bool

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

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

Example:

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

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

Parameters

callable $callback

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

Returns

bool

extract() public

extract(string|callable $path): self

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

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

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

Example:

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

$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]

Parameters

string|callable $path

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

Returns

self

filter() public

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

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

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

Example:

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

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

Parameters

callable|null $callback optional

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

Returns

self

first() public

first(): mixed

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

Returns

mixed

firstMatch() public

firstMatch(array $conditions): mixed

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

Parameters

array $conditions

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

Returns

mixed

See Also

\Cake\Collection\CollectionInterface::match()

groupBy() public

groupBy(callable|string $path): self

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

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

Example:

$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],
 ]
];

Parameters

callable|string $path

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

Returns

self

indexBy() public

indexBy(callable|string $path): self

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

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

Example:

$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'],
];

Parameters

callable|string $path

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

Returns

self

insert() public

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

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

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

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

Example:

Вставить возраст в коллекцию, содержащую пользователей:

$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]]
];

Parameters

string $path

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

mixed $values

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

Returns

self

isEmpty() public

isEmpty(): bool

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

Example:

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

Returns

bool

jsonSerialize() public

jsonSerialize(): array

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

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

Returns

array

last() public

last(): mixed

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

Returns

mixed

lazy() public

lazy(): self

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

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

Returns

self

listNested() public

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

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

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

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

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

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

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

Example:

$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]

Parameters

string|int $order optional

Порядок, в котором нужно возвращать элементы

string|callable $nestingKey optional

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

Returns

self

map() public

map(callable $callback): self

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

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

Example:

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

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

Parameters

callable $callback

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

Returns

self

match() public

match(array $conditions): self

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

Example:

$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']]
]

Parameters

array $conditions

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

Returns

self

max() public

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

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

Examples:

// 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;

Parameters

callable|string $path

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

int $sort optional

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

Returns

mixed

See Also

\Cake\Collection\CollectionInterface::sortBy()

median() public

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

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

Example:

$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 не считаются пустыми.

Parameters

string|callable|null $path optional

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

Returns

float|int|null

min() public

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

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

Examples:

// 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;

Parameters

callable|string $path

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

int $sort optional

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

Returns

mixed

See Also

\Cake\Collection\CollectionInterface::sortBy()

nest() public

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

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

Parameters

callable|string $idPath

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

callable|string $parentPath

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

string $nestingKey optional

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

Returns

self

newCollection() protected

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

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

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

Parameters

mixed ...$args

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

Returns

Cake\Collection\CollectionInterface

optimizeUnwrap() protected

optimizeUnwrap(): iterable

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

Returns

iterable

prepend() public

prepend(mixed $items): self

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

Parameters

mixed $items

Элементы для добавления в начало.

Returns

self

prependItem() public

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

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

Parameters

mixed $item

Элемент для добавления в начало.

mixed $key optional

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

Returns

self

reduce() public

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

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

Parameters

callable $callback

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

mixed $initial optional

Состояние свертывания

Returns

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

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, если любое из значений в этой коллекции проходит проверку истинности, указанную в обратном вызове.

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

Пример:

$hasYoungPeople = (new Collection([24, 45, 15]))->every(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 optional

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

int $sort optional

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

Возвращает

self

stopWhen() public

stopWhen(callable|array $condition): self

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

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

Пример:

Получить массив строк в 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(string|callable|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

Параметры

string|callable|null $path optional

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

Возвращает

float|int

take() public

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

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

Параметры

int $length optional

максимальное количество элементов для взятия из этой коллекции

int $offset optional

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

Возвращает

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 $preserveKeys = true): array

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

Параметры

bool $preserveKeys optional

использовать ли ключи, возвращаемые этой коллекцией, в качестве ключей массива. Имейте в виду, что для итераторов допустимо возвращать один и тот же ключ для разных элементов, установка этого значения в 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 optional

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

Возвращает

self

unserialize() public

unserialize(string $collection): void

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

Параметры

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

Spec-Zone.ru

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