Class ResultSetDecorator
Обобщенный декоратор ResultSet. Это позволит любому проходимому объекту выглядеть как результат базы данных
Краткое описание методов
-
__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
mixedappend() public
append(iterable $items): self
Возвращает новую коллекцию как результат конкатенации списка элементов в этой коллекции со списком переданных элементов.
Parameters
-
iterable$items Список элементов.
Returns
selfappendItem() public
appendItem(mixed $item, mixed $key = null): self
Добавляет один элемент, создавая новую коллекцию.
Parameters
-
mixed$item Элемент для добавления.
-
mixed$key optional Ключ для добавления элемента. Если null, ключ будет сгенерирован.
Returns
selfavg() 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|nullbuffered() public
buffered(): self
Возвращает новую коллекцию, в которой выполняются операции, выполняемые этой коллекцией. Независимо от того, сколько раз итерируется новая коллекция, эти операции будут выполняться только один раз.
Это также можно использовать для того, чтобы любой неперемотаемый итератор можно было перемотать.
Returns
selfcartesianProduct() 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
selfchunk() 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
selfchunkWithKeys() 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
selfcombine() 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
selfcompile() 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
selfcontains() public
contains(mixed $value): bool
Возвращает true, если $value присутствует в этой коллекции. Сравнения выполняются как по значению, так и по типу.
Parameters
-
mixed$value Значение для проверки.
Returns
boolcount() public
count(): int
Сделать этот объект подсчитываемым.
Часть интерфейса Countable. Вызов этого метода преобразует основной траверсабельный объект в массив и получит количество основных данных.
Returns
intcountBy() 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
selfcountKeys() public
countKeys(): int
Возвращает количество уникальных ключей в этом итераторе. Это то же самое, что и количество элементов, которые будет содержать коллекция после вызова toArray()
Этот метод имеет ряд предостережений. Подробности см. в CollectionInterface::count()
Returns
intSee Also
each() public
each(callable $callback): $this
Применяет обратный вызов к элементам в этой коллекции.
Example:
$collection = (new Collection($items))->each(function ($value, $key) {
echo "Element $key: $value";
}); Parameters
-
callable$callback Обратный вызов для каждого элемента в коллекции.
Returns
$thisevery() 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
boolextract() 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
selffilter() 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
selffirst() public
first(): mixed
Возвращает первый результат в этой коллекции
Returns
mixedfirstMatch() public
firstMatch(array $conditions): mixed
Возвращает первый результат, соответствующий всем парам «ключ-значение», перечисленным в условиях.
Parameters
-
array$conditions список пар «ключ-значение» условий, где ключ — это путь к свойству, как принято в
Collection::extract, а значение — условие, с которым будет сопоставлен каждый элемент
Returns
mixedSee Also
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
selfindexBy() 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
selfinsert() 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
selfisEmpty() public
isEmpty(): bool
Возвращает, есть ли элементы в этой коллекции
Example:
$items [1, 2, 3]; (new Collection($items))->isEmpty(); // false
(new Collection([]))->isEmpty(); // true
Returns
booljsonSerialize() public
jsonSerialize(): array
Возвращает данные, которые могут быть преобразованы в JSON. Возвращает те же данные, что и toArray(), которые содержат только уникальные ключи.
Часть интерфейса JsonSerializable.
Returns
arraylast() public
last(): mixed
Возвращает последний результат в этой коллекции
Returns
mixedlazy() public
lazy(): self
Возвращает новую коллекцию, в которой все операции, присоединенные после неё, гарантированно выполняются лениво. То есть, элементы будут выводиться по одному.
Ленивую коллекцию можно итерировать только один раз. Вторая попытка приводит к ошибке.
Returns
selflistNested() 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
selfmap() public
map(callable $callback): self
Возвращает другую коллекцию после изменения каждого из значений в этой коллекции с помощью предоставленного вызываемого объекта.
Каждый раз при выполнении обратного вызова он будет получать значение элемента в текущей итерации, ключ элемента и эту коллекцию в качестве аргументов в указанном порядке.
Example:
Получение коллекции булевых значений, где true указывает, является ли человек женщиной:
$collection = (new Collection($people))->map(function ($person, $key) {
return $person->gender === 'female';
}); Parameters
-
callable$callback метод, который будет получать каждый из элементов и возвращать новое значение для ключа, который итерируется
Returns
selfmatch() 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
selfmax() 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
mixedSee Also
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|nullmin() 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
mixedSee Also
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
selfnewCollection() protected
newCollection(mixed ...$args): Cake\Collection\CollectionInterface
Возвращает новую коллекцию.
Позволяет классам, которые используют этот трейт, определять свой собственный тип возвращаемого интерфейса коллекции
Parameters
-
mixed...$args Аргументы конструктора.
Returns
Cake\Collection\CollectionInterfaceoptimizeUnwrap() protected
optimizeUnwrap(): iterable
Разворачивает этот итератор и возвращает самый простой траверсабельный объект, который можно использовать для получения данных
Returns
iterableprepend() public
prepend(mixed $items): self
Добавляет набор элементов в начало коллекции, создавая новую коллекцию
Parameters
-
mixed$items Элементы для добавления в начало.
Returns
selfprependItem() public
prependItem(mixed $item, mixed $key = null): self
Добавляет один элемент в начало, создавая новую коллекцию.
Parameters
-
mixed$item Элемент для добавления в начало.
-
mixed$key optional Ключ для добавления элемента в начало. Если null, ключ будет сгенерирован.
Returns
selfreduce() public
reduce(callable $callback, mixed $initial = null): mixed
Сворачивает значения в этой коллекции в одно значение, как результат применения функции обратного вызова ко всем элементам. $zero - это начальное состояние свертывания, и каждый последующий шаг должен возвращаться функцией обратного вызова. Если $zero опущено, первое значение коллекции будет использовано вместо него, и свертывание начнется со второго элемента.
Parameters
-
callable$callback Функция обратного вызова для вызова
-
mixed$initial optional Состояние свертывания
Returns
mixedreject() 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, следует ли им быть вне результирующей коллекции.
Возвращает
selfsample() public
sample(int $length = 10): self
Возвращает новую коллекцию с максимальным количеством $size случайных элементов из этой коллекции
Параметры
-
int$length optional максимальное количество элементов для случайного взятия из этой коллекции
Возвращает
selfserialize() public
serialize(): string
Возвращает строковое представление этого объекта, которое может быть использовано для его реконструкции
Возвращает
stringshuffle() public
shuffle(): self
Возвращает новую коллекцию с элементами, размещенными в случайном порядке, эта функция не сохраняет исходные ключи в коллекции.
Возвращает
selfskip() public
skip(int $length): self
Возвращает новую коллекцию, которая будет пропускать указанное количество элементов в начале итерации.
Параметры
-
int$length Количество элементов для пропуска.
Возвращает
selfsome() public
some(callable $callback): bool
Возвращает true, если любое из значений в этой коллекции проходит проверку истинности, указанную в обратном вызове.
Каждый раз, когда выполняется обратный вызов, он будет получать значение элемента в текущей итерации и ключ элемента в качестве аргументов, в указанном порядке.
Пример:
$hasYoungPeople = (new Collection([24, 45, 15]))->every(function ($value, $key) {
return $value < 21;
}); Параметры
-
callable$callback функция обратного вызова
Возвращает
boolsortBy() 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
Возвращает
selfstopWhen() 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, а значение — условие, с которым будет сопоставлен каждый элемент.
Возвращает
selfsumOf() 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|inttake() public
take(int $length = 1, int $offset = 0): self
Возвращает новую коллекцию с максимальным количеством $size элементов во внутреннем порядке, в котором была создана эта коллекция. Если передан второй параметр, он определит, с какой позиции начинать брать элементы.
Параметры
-
int$length optional максимальное количество элементов для взятия из этой коллекции
-
int$offset optional Смещение позиции, с которого следует брать элементы
Возвращает
selftakeLast() 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 Количество элементов в конце коллекции
Возвращает
selfthrough() public
through(callable $callback): self
Пропускает эту коллекцию через вызываемый объект в качестве своего первого аргумента. Это полезно для декорирования полной коллекции другим объектом.
Пример:
$items = [1, 2, 3];
$decorated = (new Collection($items))->through(function ($collection) {
return new MyCustomCollection($collection);
}); Параметры
-
callable$callback Вызываемая функция, которая будет получать эту коллекцию в качестве первого аргумента.
Возвращает
selftoArray() public
toArray(bool $preserveKeys = true): array
Возвращает массивое представление результатов
Параметры
-
bool$preserveKeys optional использовать ли ключи, возвращаемые этой коллекцией, в качестве ключей массива. Имейте в виду, что для итераторов допустимо возвращать один и тот же ключ для разных элементов, установка этого значения в false может помочь получить все элементы, если ключи не важны в результате.
Возвращает
arraytoList() public
toList(): array
Возвращает числовое представление массива результатов. Это эквивалентно вызову toArray(false)
Возвращает
arraytranspose() 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'],
// ] Возвращает
selfunfold() 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
Возвращает
selfunserialize() public
unserialize(string $collection): void
Расссериализует переданную строку и восстанавливает экземпляр коллекции
Параметры
-
string$collection Сериализованная коллекция
Возвращает
voidunwrap() public
unwrap(): Traversable
Возвращает ближайший вложенный итератор, который можно безопасно пройти, не теряя каких-либо возможных преобразований. Это используется в основном для удаления пустых оболочек IteratorIterator, которые могут только замедлить процесс итерации.
Возвращает
Traversablezip() 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 Коллекции для объединения.
Возвращает
selfzipWith() 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