Класс ResultSetDecorator
Обобщенный декоратор ResultSet. Это позволит любому итерируемому объекту отображаться как результат базы данных
Краткое описание методов
-
__construct() public
Конструктор. Вы можете указать массив или любой итерируемый объект
-
__debugInfo() public
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
-
__serialize() public
Возвращает массив для сериализации этого объекта.
-
__unserialize() public
Пересоздаёт экземпляр Collection.
-
_createMatcherFilter() protected
Возвращает вызываемый объект, который получает значение и возвращает, соответствует ли оно определённому условию.
-
_extract() protected
Возвращает столбец из $data, который можно извлечь, итерируясь по именам столбцов, содержащимся в $path. Он вернёт массивы для элементов, представленных с помощью
{*} -
_propertyExtractor() protected
Возвращает вызываемый объект, который может использоваться для извлечения свойства или столбца из массива или объекта на основе пути, разделённого точками.
-
_simpleExtract() protected
Возвращает столбец из $data, который можно извлечь, итерируясь по именам столбцов, содержащимся в $path.
-
append() public
Возвращает новый коллектив в результате конкатенации списка элементов в этом наборе с переданным списком элементов.
-
appendItem() public
Добавляет один элемент, создавая новую коллекцию.
-
avg() public
Возвращает среднее значение всех значений, извлечённых с помощью $path или из этого набора.
-
buffered() public
Возвращает новую коллекцию, где операции, выполненные этой коллекцией, выполняются только один раз. Независимо от того, сколько раз новая коллекция итерируется, эти операции будут выполняться только один раз.
-
cartesianProduct() public
Создаёт новую коллекцию, которая является декартовым произведением текущей коллекции.
-
chunk() public
Разбивает коллекцию на более мелкие массивы заданного размера.
-
chunkWithKeys() public
Разбивает коллекцию на более мелкие массивы заданного размера.
-
combine() public
Возвращает новую коллекцию, где значения извлекаются на основе пути к значению, а затем индексируются по пути к ключу. В необязательном порядке этот метод может создавать родительские группы на основе пути к свойству группы.
-
compile() public
Проходит по всем элементам в этой коллекции один раз, выполняет все сопоставленные операции и, наконец, возвращает новую коллекцию с результатом. Это полезно для преобразования неперематываемых внутренних итераторов в коллекцию, которую можно перематывать и использовать несколько раз.
-
contains() public
Возвращает true, если $value присутствует в этой коллекции. Сравнения выполняются по значению и типу.
-
count() public
Делает этот объект счётным.
-
countBy() public
Сортирует список по группам и возвращает количество элементов в каждой группе. Аналогично groupBy, но вместо возвращения списка значений возвращает количество значений в этой группе.
-
countKeys() public
Возвращает количество уникальных ключей в этой итерации. Это совпадает с количеством элементов, которые будет содержать коллекция после вызова
toArray() -
each() public
Применяет обратный вызов к элементам в этой коллекции.
-
every() public
Возвращает true, если все значения в этой коллекции проходят проверку истинности, заданную в обратном вызове.
-
extract() public
Возвращает новый набор, содержащий значение столбца или свойства, найденное в каждом из элементов.
-
filter() public
Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые проходят проверку истинности. Только значения, для которых обратный вызов возвращает true, будут присутствовать в результирующей коллекции.
-
first() public
Возвращает первый результат в этой коллекции.
-
firstMatch() public
Возвращает первый результат, соответствующий всем парам ключ-значение, указанным в условиях.
-
groupBy() public
Разбивает коллекцию на наборы, сгруппированные по результату применения каждого значения через обратный вызов. Если $callback – строка, а не вызываемый объект, группирует по свойству, названному $callback для каждого из значений.
-
indexBy() public
Учитывая список и функцию обратного вызова, которая возвращает ключ для каждого элемента в списке (или имя свойства), возвращает объект с индексом каждого элемента. Похоже на groupBy, но для случаев, когда ключи уникальны.
-
insert() public
Возвращает новый набор, содержащий каждый из элементов, найденных в
$valuesкак свойство внутри соответствующих элементов в этой коллекции. Свойство, куда будут вставлены значения, описывается параметром$path -
isEmpty() public
Возвращает, есть ли элементы в этой коллекции.
-
jsonSerialize() public
Возвращает данные, которые можно преобразовать в JSON. Это возвращает те же данные, что и
toArray(), которые содержат только уникальные ключи. -
last() public
Возвращает последний результат в этой коллекции.
-
lazy() public
Возвращает новую коллекцию, где все операции, присоединённые к ней, гарантированно выполняются лениво. То есть элементы будут выдаваться по одному.
-
listNested() public
Возвращает новый набор с каждым из элементов этой коллекции после сплющивания структуры дерева. Структура дерева определяется вложением элементов под ключом с известным именем. Такое имя можно указать, используя параметр '$nestingKey'.
-
map() public
Возвращает другую коллекцию после изменения каждого из значений в этой с использованием предоставленного вызываемого объекта.
-
match() public
Просматривает каждое значение в списке, возвращая коллекцию всех значений, которые содержат все пары ключ-значение, указанные в $conditions.
-
max() public
Возвращает верхний элемент в этой коллекции после сортировки по свойству. Обратитесь к методу sortBy для получения информации о параметрах обратного вызова и $sort.
-
median() public
Возвращает медиану всех значений, извлечённых с помощью $path или из этой коллекции.
-
min() public
Возвращает самый нижний элемент в этом наборе после сортировки по свойству. Обратитесь к методу sortBy для получения информации о коллбэке и параметрах $sort.
-
nest() public
Возвращает новый набор, где значения вложены в структуру дерева на основе пути свойства id и пути свойства родительского id.
-
newCollection() protected
Возвращает новый набор.
-
optimizeUnwrap() protected
Распаковывает этот итератор и возвращает самый простой итерируемый объект, который можно использовать для извлечения данных.
-
prepend() public
Добавляет набор элементов в начало набора, создавая новый набор.
-
prependItem() public
Добавляет один элемент в начало, создавая новый набор.
-
reduce() public
Сворачивает значения в этом наборе в одно значение, как результат применения коллбэк-функции ко всем элементам. $zero — начальное состояние свертки, и каждый последующий шаг должен возвращаться коллбэк-функцией. Если $zero опущен, первое значение набора будет использовано вместо него, и свертка начнется со второго элемента.
-
reject() public
Просматривает каждое значение в наборе и возвращает другой набор со всеми значениями, которые не проходят проверку на истинность. Это противоположно
filter. -
sample() public
Возвращает новый набор с максимальным количеством случайных элементов $size из этого набора.
-
serialize() public
Возвращает строковое представление этого объекта, которое можно использовать для его восстановления.
-
shuffle() public
Возвращает новый набор с элементами в случайном порядке. Эта функция не сохраняет исходные ключи в наборе.
-
skip() public
Возвращает новый набор, который пропустит указанное количество элементов в начале итерации.
-
some() public
Возвращает true, если хотя бы одно из значений в этом наборе проходит проверку на истинность, заданную в коллбэке.
-
sortBy() public
Возвращает отсортированный итератор элементов из этого набора, упорядоченных по возрастанию результатов выполнения каждого значения через коллбэк. $callback также может быть строкой, представляющей имя столбца или свойства.
-
stopWhen() public
Создает новый набор, который при итерации перестанет генерировать результаты, если предоставленное условие примет значение true.
-
sumOf() public
Возвращает общую сумму всех значений, извлечённых с помощью $matcher или из этого набора.
-
take() public
Возвращает новый набор с максимальным количеством элементов $size в внутреннем порядке создания этого набора. Если указан второй параметр, он определит, с какой позиции начинать извлечение элементов.
-
takeLast() public
Возвращает последние N элементов набора.
-
through() public
Пропускает этот набор через вызываемый объект в качестве первого аргумента. Это полезно для декорирования всего набора другим объектом.
-
toArray() public
Возвращает массивное представление результатов.
-
toList() public
Возвращает массивное представление результатов с численными индексами. Это эквивалентно вызову
toArray(false). -
transpose() public
Транспонирует строки и столбцы в столбцы и строки.
-
unfold() public
Создаёт новый набор, где элементы являются конкатенацией списков элементов, сгенерированных функцией преобразования, применённой к каждому элементу исходного набора.
-
unserialize() public
Десериализует переданную строку и восстанавливает экземпляр Collection.
-
unwrap() public
Возвращает ближайший вложенный итератор, который можно безопасно пройти, не теряя возможных преобразований. Это используется в основном для удаления пустых обёрток IteratorIterator, которые могут только замедлить процесс итерации.
-
zip() public
Комбинирует элементы этого набора с каждым элементом переданных итерируемых объектов, используя их позиционный индекс в качестве ссылки.
-
zipWith() public
Комбинирует элементы этого набора с каждым элементом переданных итерируемых объектов, используя их позиционный индекс в качестве ссылки.
Подробное описание методов
__construct() public
__construct(iterable $items)
Конструктор. Вы можете передать массив или любой итерируемый объект
Параметры
-
iterable$items Элементы.
Исключения
InvalidArgumentExceptionЕсли передан неверный тип для элементов.
__debugInfo() public
__debugInfo(): array<string, mixed>
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
array<string, mixed>__serialize() public
__serialize(): array
Возвращает массив для сериализации этого объекта.
Возвращает
array__unserialize() public
__unserialize(array $data): void
Восстанавливает экземпляр Collection.
Параметры
-
array$data Массив данных.
Возвращает
void_createMatcherFilter() protected
_createMatcherFilter(array $conditions): Closure
Возвращает вызываемый объект, который принимает значение и возвращает, соответствует ли оно определённому условию.
Параметры
-
array$conditions Список условий для соответствия, где ключ — путь к свойству для извлечения из текущего элемента, а значение — значение, с которым следует сравнить элемент.
Возвращает
Closure_extract() protected
_extract(ArrayAccess|array $data, array<string> $parts): mixed
Возвращает столбец из $data, который может быть извлечён, итерируя по именам столбцов, содержащихся в $path. Возвращает массивы для элементов, представленных {*}
Параметры
-
ArrayAccess|array$data Данные.
-
array<string>$parts Путь для извлечения.
Возвращает
mixed_propertyExtractor() protected
_propertyExtractor(callable|string $path): callable
Возвращает вызываемый объект, который можно использовать для извлечения свойства или столбца из массива или объекта на основе пути, разделённого точками.
Параметры
-
callable|string$path Путь, разделённый точками, к столбцу для следования, чтобы в итоге можно было вернуть значение, или вызываемый объект, который позаботится об этом.
Возвращает
callable_simpleExtract() protected
_simpleExtract(ArrayAccess|array $data, array<string> $parts): mixed
Возвращает столбец из $data, который может быть извлечён, итерируя по именам столбцов, содержащихся в $path.
Параметры
-
ArrayAccess|array$data Данные.
-
array<string>$parts Путь для извлечения.
Возвращает
mixedappend() public
append(iterable $items): self
Возвращает новую коллекцию в результате конкатенации списка элементов в этой коллекции со списком переданных элементов.
Параметры
-
iterable$items Список элементов.
Возвращает
selfappendItem() public
appendItem(mixed $item, mixed $key = null): self
Добавляет один элемент, создавая новую коллекцию.
Параметры
-
mixed$item Добавляемый элемент.
-
mixed$key optional Ключ для добавления элемента. Если null, ключ будет сгенерирован.
Возвращает
selfavg() public
avg(callable|string|null $path = null): float|int|null
Возвращает среднее значение всех значений, извлечённых с помощью $path или этой коллекции.
Пример:
$items = [
['invoice' => ['total' => 100]],
['invoice' => ['total' => 200]]
];
$total = (new Collection($items))->avg('invoice.total');
// Total: 150
$total = (new Collection([1, 2, 3]))->avg();
// Total: 2 Среднее пустого множества или 0 строк — null. Коллекции с null значениями не считаются пустыми.
Параметры
-
callable|string|null$path optional Имя свойства для суммирования или функция. Если значение не передано, будет использована функция идентичности, возвращающая значение свойства для суммирования.
Возвращает
float|int|nullbuffered() public
buffered(): self
Возвращает новую коллекцию, где операции, выполненные этой коллекцией, выполняются один раз. Независимо от того, сколько раз новая коллекция итерируется, эти операции выполняются только один раз.
Это также может использоваться для преобразования любого неперематываемого итератора в перематываемый.
Возвращает
selfcartesianProduct() public
cartesianProduct(callable|null $operation = null, callable|null $filter = null): self
Создаёт новую коллекцию, являющуюся декартовым произведением текущей коллекции.
Для создания декартова произведения коллекция должна содержать данные с одним измерением.
Пример
$collection = new Collection([['A', 'B', 'C'], [1, 2, 3]]);
$result = $collection->cartesianProduct()->toArray();
$expected = [
['A', 1],
['A', 2],
['A', 3],
['B', 1],
['B', 2],
['B', 3],
['C', 1],
['C', 2],
['C', 3],
]; Параметры
-
callable|null$operation optional Вызываемый объект, позволяющий настроить результат произведения.
-
callable|null$filter optional Функция фильтрации, которая должна возвращать true, чтобы результат был частью конечных результатов.
Возвращает
selfchunk() public
chunk(int $chunkSize): self
Разбивает коллекцию на более мелкие массивы заданного размера.
Пример:
$items [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; $chunked = (new Collection($items))->chunk(3)->toList(); // Returns [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
Параметры
-
int$chunkSize Максимальный размер каждого фрагмента.
Возвращает
selfchunkWithKeys() public
chunkWithKeys(int $chunkSize, bool $keepKeys = true): self
Разбивает коллекцию на более мелкие массивы заданного размера.
Пример:
$items ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5, 'f' => 6]; $chunked = (new Collection($items))->chunkWithKeys(3)->toList(); // Returns [['a' => 1, 'b' => 2, 'c' => 3], ['d' => 4, 'e' => 5, 'f' => 6]]
Параметры
-
int$chunkSize Максимальный размер каждого фрагмента.
-
bool$keepKeys optional Если ключи массива должны сохраняться.
Возвращает
selfcombine() public
combine(callable|string $keyPath, callable|string $valuePath, callable|string|null $groupPath = null): self
Возвращает новую коллекцию, где значения извлекаются на основе пути значения и затем индексируются путём ключа. Этот метод может создавать родительские группы на основе пути свойства группы.
Примеры:
$items = [
['id' => 1, 'name' => 'foo', 'parent' => 'a'],
['id' => 2, 'name' => 'bar', 'parent' => 'b'],
['id' => 3, 'name' => 'baz', 'parent' => 'a'],
];
$combined = (new Collection($items))->combine('id', 'name');
// Result will look like this when converted to array
[
1 => 'foo',
2 => 'bar',
3 => 'baz',
];
$combined = (new Collection($items))->combine('id', 'name', 'parent');
// Result will look like this when converted to array
[
'a' => [1 => 'foo', 3 => 'baz'],
'b' => [2 => 'bar']
]; Параметры
-
callable|string$keyPath путь к имени столбца для индексирования или функция, возвращающая ключ индексирования из предоставленного элемента
-
callable|string$valuePath путь к имени столбца для использования в качестве значения массива или функция, возвращающая значение из предоставленного элемента
-
callable|string|null$groupPath optional путь к имени столбца для использования в качестве родительского ключа группировки или функция, возвращающая ключ из предоставленного элемента
Возвращает
selfcompile() public
compile(bool $keepKeys = true): self
Итерирует все элементы в этом наборе и выполняет все стековые операции над ними, в конечном итоге возвращая новый набор с результатом. Это полезно для преобразования необращаемых внутренних итераторов в набор, который можно перемотать и использовать несколько раз.
Типичный случай использования — повторное использование одной и той же переменной для вычисления различных данных. В таких случаях может быть полезно и более производительно сначала скомпилировать набор, а затем применить к нему дополнительные операции.
Пример:
$collection->map($mapper)->sortBy('age')->extract('name');
$compiled = $collection->compile();
$isJohnHere = $compiled->some($johnMatcher);
$allButJohn = $compiled->filter($johnMatcher); В приведенном выше примере, если бы набор не был скомпилирован предварительно, итерации для map, sortBy и extract выполнялись бы дважды: один раз для получения $isJohnHere и один раз для $allButJohn
Можно представить этот метод как способ создания точек сохранения для сложных вычислений в наборе.
Параметры
-
bool$keepKeys optional Использовать ли ключи, возвращаемые этим набором, в качестве ключей массива. Имейте в виду, что для итераторов допустимо возвращать один и тот же ключ для разных элементов, установление этого значения в false может помочь получить все элементы, если ключи в результате не важны.
Возвращает
selfcontains() public
contains(mixed $value): bool
Возвращает true, если $value присутствует в этом наборе. Сравнения выполняются по значению и типу.
Параметры
-
mixed$value Значение для проверки
Возвращает
boolcount() public
count(): int
Делает этот объект счётным.
Часть интерфейса Countable. Вызов этого метода преобразует лежащий в основе перечисляемый объект в массив и получает количество данных в основе.
Возвращает
intcountBy() public
countBy(callable|string $path): self
Сортирует список в группы и возвращает количество элементов в каждой группе. Аналогично groupBy, но вместо возвращения списка значений возвращает количество значений в этой группе.
Когда $callback — строка, это должно быть имя свойства для извлечения или путь свойств, разделённый точками, который следует пройти, чтобы получить последнее в пути.
Пример:
$items = [
['id' => 1, 'name' => 'foo', 'parent_id' => 10],
['id' => 2, 'name' => 'bar', 'parent_id' => 11],
['id' => 3, 'name' => 'baz', 'parent_id' => 10],
];
$group = (new Collection($items))->countBy('parent_id');
// Or
$group = (new Collection($items))->countBy(function ($e) {
return $e['parent_id'];
});
// Result will look like this when converted to array
[
10 => 2,
11 => 1
]; Параметры
-
callable|string$path Имя столбца для использования в качестве индекса или функция, возвращающая значение. Или функция, возвращающая ключ индекса из предоставленного элемента
Возвращает
selfcountKeys() public
countKeys(): int
Возвращает количество уникальных ключей в этом итераторе. Это то же самое, что и количество элементов, которое будет содержать набор после вызова toArray()
Этот метод имеет ряд ограничений. Подробности см. в CollectionInterface::count().
Возвращает
intСм. также
each() public
each(callable $callback): $this
Применяет обратный вызов к элементам в этом наборе.
Пример:
$collection = (new Collection($items))->each(function ($value, $key) {
echo "Element $key: $value";
}); Параметры
-
callable$callback Обратный вызов для выполнения для каждого элемента в наборе.
Возвращает
$thisevery() public
every(callable $callback): bool
Возвращает true, если все значения в этом наборе проходят проверку истинности, заданную в обратном вызове.
Обратный вызов получает значение и ключ проверяемого элемента и должен возвращать true, если проверка пройдена.
Пример:
$overTwentyOne = (new Collection([24, 45, 60, 15]))->every(function ($value, $key) {
return $value > 21;
}); Пустые наборы всегда возвращают true.
Параметры
-
callable$callback Функция обратного вызова
Возвращает
boolextract() public
extract(callable|string $path): self
Возвращает новый набор, содержащий значение столбца или свойства, найденное в каждом элементе.
Сопоставитель может быть строкой со значением свойства или путём свойств, разделённым точками, который следует пройти, чтобы получить последнее в пути.
Если столбец или свойство не были найдены для конкретного элемента в наборе, на этой позиции расположено null.
Пример:
Извлечение имени пользователя для всех комментариев в массиве:
$items = [
['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']],
['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']]
];
$extracted = (new Collection($items))->extract('comment.user.name');
// Result will look like this when converted to array
['Mark', 'Renan'] Также можно извлечь сплющеный набор из вложенных свойств
$items = [
['comment' => ['votes' => [['value' => 1], ['value' => 2], ['value' => 3]]],
['comment' => ['votes' => [['value' => 4]]
];
$extracted = (new Collection($items))->extract('comment.votes.{*}.value');
// Result will contain
[1, 2, 3, 4] Параметры
-
callable|string$path Путь, разделённый точками, к столбцу, за которым следует пройти, чтобы вернуть конечный результат, или вызываемый объект, который позаботится об этом.
Возвращает
selffilter() public
filter(callable|null $callback = null): self
Просматривает каждое значение в наборе и возвращает другой набор со всеми значениями, которые проходят проверку истинности. В результирующем наборе будут только те значения, для которых обратный вызов возвращает true.
Каждый раз, когда выполняется обратный вызов, он получает значение элемента в текущей итерации, ключ элемента и этот набор в качестве аргументов в указанном порядке.
Пример:
Фильтрация нечётных чисел в массиве, в конечном итоге в результирующем наборе будет только значение 2:
$collection = (new Collection([1, 2, 3]))->filter(function ($value, $key) {
return $value % 2 === 0;
}); Параметры
-
callable|null$callback optional Метод, который получит каждый из элементов и вернёт true, если они должны быть в результирующем наборе. Если оставлено null, будет использован обратный вызов, который отфильтровывает ложные значения.
Возвращает
selffirst() public
first(): mixed
Возвращает первый результат в этом наборе
Возвращает
mixedfirstMatch() public
firstMatch(array $conditions): mixed
Возвращает первый результат, соответствующий всем парам ключ-значение, указанным в условиях.
Параметры
-
array$conditions список пар ключ-значение условий, где ключ — путь к свойству, принятый
Collection::extract, а значение — условие, с которым будет сопоставляться каждый элемент
Возвращает
mixedСм. также
groupBy() public
groupBy(callable|string $path): self
Разбивает набор на группы, сгруппированные по результатам применения обратного вызова к каждому значению. Если $callback — строка вместо вызываемого объекта, группирует по свойству, указанному в $callback, для каждого значения.
Когда $callback — строка, это должно быть имя свойства для извлечения или путь свойств, разделённый точками, который следует пройти, чтобы получить последнее в пути.
Пример:
$items = [
['id' => 1, 'name' => 'foo', 'parent_id' => 10],
['id' => 2, 'name' => 'bar', 'parent_id' => 11],
['id' => 3, 'name' => 'baz', 'parent_id' => 10],
];
$group = (new Collection($items))->groupBy('parent_id');
// Or
$group = (new Collection($items))->groupBy(function ($e) {
return $e['parent_id'];
});
// Result will look like this when converted to array
[
10 => [
['id' => 1, 'name' => 'foo', 'parent_id' => 10],
['id' => 3, 'name' => 'baz', 'parent_id' => 10],
],
11 => [
['id' => 2, 'name' => 'bar', 'parent_id' => 11],
]
]; Параметры
-
callable|string$path Имя столбца для группировки или обратный вызов, возвращающий значение. Или функция, возвращающая ключ группировки из предоставленного элемента
Возвращает
selfindexBy() public
indexBy(callable|string $path): self
Для данного списка и функции обратного вызова, возвращающей ключ для каждого элемента в списке (или имя свойства), возвращает объект с индексом каждого элемента. Аналогично groupBy, но для случаев, когда ключи уникальны.
Когда $callback — строка, это должно быть имя свойства для извлечения или путь свойств, разделённый точками, который следует пройти, чтобы получить последнее в пути.
Пример:
$items = [
['id' => 1, 'name' => 'foo'],
['id' => 2, 'name' => 'bar'],
['id' => 3, 'name' => 'baz'],
];
$indexed = (new Collection($items))->indexBy('id');
// Or
$indexed = (new Collection($items))->indexBy(function ($e) {
return $e['id'];
});
// Result will look like this when converted to array
[
1 => ['id' => 1, 'name' => 'foo'],
3 => ['id' => 3, 'name' => 'baz'],
2 => ['id' => 2, 'name' => 'bar'],
]; Параметры
-
callable|string$path Имя столбца для использования в качестве индекса или функция, возвращающая значение. Или функция, возвращающая ключ индекса из предоставленного элемента
Возвращает
selfinsert() public
insert(string $path, mixed $values): self
Возвращает новую коллекцию, содержащую каждый элемент, найденный в $values, в качестве свойства внутри соответствующих элементов в этой коллекции. Свойство, куда будут вставлены значения, описывается параметром $path.
Параметр $path может быть строкой с именем свойства или точкой, разделяющей путь к свойствам, которые необходимо пройти, чтобы получить последнее из них в пути.
Если для конкретного элемента в коллекции не удаётся найти столбец или свойство в рамках пути, элемент останется без изменений.
Пример:
Вставка возрастов в коллекцию, содержащую пользователей:
$items = [
['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']],
['comment' => ['body' => 'awesome', 'user' => ['name' => 'Renan']]
];
$ages = [25, 28];
$inserted = (new Collection($items))->insert('comment.user.age', $ages);
// Result will look like this when converted to array
[
['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark', 'age' => 25]],
['comment' => ['body' => 'awesome', 'user' => ['name' => 'Renan', 'age' => 28]]
]; Параметры
-
string$path строка, разделённая точками, обозначающая путь в иерархии каждого значения, чтобы значение можно было вставить.
-
mixed$values Значения, которые должны быть вставлены по указанному пути. Значения сопоставляются с элементами в этой коллекции по их порядковому индексу.
Возвращаемое значение
selfisEmpty() public
isEmpty(): bool
Возвращает значение, указывающее, есть ли элементы в этой коллекции.
Пример:
$items [1, 2, 3]; (new Collection($items))->isEmpty(); // false
(new Collection([]))->isEmpty(); // true
Возвращаемое значение
booljsonSerialize() public
jsonSerialize(): array
Возвращает данные, которые можно преобразовать в JSON. Возвращаются те же данные, что и toArray(), содержащие только уникальные ключи.
Часть интерфейса JsonSerializable.
Возвращаемое значение
arraylast() public
last(): mixed
Возвращает последний результат в этой коллекции.
Возвращаемое значение
mixedlazy() public
lazy(): self
Возвращает новую коллекцию, где все операции, выполняемые после неё, гарантированно выполняются лениво. То есть элементы будут выдаваться по одному.
Коллекцией, использующей ленивый механизм, можно итерироваться только один раз. Вторая попытка приведёт к ошибке.
Возвращаемое значение
selflistNested() public
listNested(string|int $order = 'desc', callable|string $nestingKey = 'children'): self
Возвращает новую коллекцию с каждым элементом этой коллекции после выравнивания древовидной структуры. Древовидная структура определяется вложенными элементами под ключом с известным именем. Это имя можно указать, используя параметр $nestingKey.
По умолчанию возвращаются все элементы в дереве, следуя алгоритму обхода в глубину (Depth First Search), то есть элементы от родительского элемента к листьям для каждой ветви.
Возвратить все элементы снизу вверх можно, используя обход в ширину (Breadth First Search), передав параметр $dir со значением 'asc'. То есть, он вернёт все элементы для той же глубины дерева, но в обратном порядке, от листьев к корню.
Наконец, можно указать, чтобы получить только коллекцию с узлами-листьями в структуре дерева. Для этого передайте 'leaves' в первый аргумент.
Возможные значения для первого аргумента являются псевдонимами для следующих констант, и можно передать вместо псевдонима сами константы:
- desc: RecursiveIteratorIterator::SELF_FIRST
- asc: RecursiveIteratorIterator::CHILD_FIRST
- leaves: RecursiveIteratorIterator::LEAVES_ONLY
Пример:
$collection = new Collection([
['id' => 1, 'children' => [['id' => 2, 'children' => [['id' => 3]]]]],
['id' => 4, 'children' => [['id' => 5]]]
]);
$flattenedIds = $collection->listNested()->extract('id'); // Yields [1, 2, 3, 4, 5] Параметры
-
string|int$order optional Порядок возвращения элементов.
-
callable|string$nestingKey optional Имя ключа, под которым вложены дочерние элементы, или вызываемая функция, которая вернёт список дочерних элементов.
Возвращаемое значение
selfmap() public
map(callable $callback): self
Возвращает другую коллекцию после модификации каждого значения в этой коллекции с помощью предоставленного вызываемого объекта.
Каждый раз, когда вызывается обратный вызов, он получает значение элемента в текущей итерации, ключ элемента и эту коллекцию в качестве аргументов в указанном порядке.
Пример:
Получение коллекции булевых значений, где true указывает, является ли человек женщиной:
$collection = (new Collection($people))->map(function ($person, $key) {
return $person->gender === 'female';
}); Параметры
-
callable$callback метод, который получит каждый из элементов и вернёт новое значение для ключа, по которому идёт итерация.
Возвращаемое значение
selfmatch() public
match(array $conditions): self
Просматривает каждое значение в списке, возвращая коллекцию всех значений, которые содержат все пары ключ-значение, перечисленные в $conditions.
Пример:
$items = [ ['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']], ['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']] ]; $extracted = (new Collection($items))->match(['user.name' => 'Renan']); // Result will look like this when converted to array [ ['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']] ]
Параметры
-
array$conditions список пар ключ-значение условий, где ключ — путь к свойству, принятому в `Collection::extract`, а значение — условие, с которым будет сравниваться каждый элемент.
Возвращаемое значение
selfmax() public
max(callable|string $path, int $sort = \SORT_NUMERIC): mixed
Возвращает верхний элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о функции обратного вызова и параметре $sort.
Примеры:
// For a collection of employees
$max = $collection->max('age');
$max = $collection->max('user.salary');
$max = $collection->max(function ($e) {
return $e->get('user')->get('salary');
});
// Display employee name
echo $max->name; Параметры
-
callable|string$path Имя столбца для сортировки или функция, возвращающая значение.
-
int$sort optional Тип сортировки: SORT_STRING, SORT_NUMERIC или SORT_NATURAL.
Возвращаемое значение
mixedСм. также
median() public
median(callable|string|null $path = null): float|int|null
Возвращает медиану всех значений, извлеченных с помощью $path или из этой коллекции.
Пример:
$items = [
['invoice' => ['total' => 400]],
['invoice' => ['total' => 500]]
['invoice' => ['total' => 100]]
['invoice' => ['total' => 333]]
['invoice' => ['total' => 200]]
];
$total = (new Collection($items))->median('invoice.total');
// Total: 333
$total = (new Collection([1, 2, 3, 4]))->median();
// Total: 2.5 Медиана пустого набора или 0 строк — null. Коллекции с null значениями не считаются пустыми.
Параметры
-
callable|string|null$path optional Имя свойства для суммирования или функция, которая вернёт значение свойства для суммирования. Если значение не передано, будет использована функция тождества.
Возвращаемое значение
float|int|nullmin() public
min(callable|string $path, int $sort = \SORT_NUMERIC): mixed
Возвращает нижний элемент в этой коллекции после сортировки по свойству. См. метод sortBy для получения информации о функции обратного вызова и параметре $sort.
Примеры:
// For a collection of employees
$min = $collection->min('age');
$min = $collection->min('user.salary');
$min = $collection->min(function ($e) {
return $e->get('user')->get('salary');
});
// Display employee name
echo $min->name; Параметры
-
callable|string$path Имя столбца для сортировки или функция, возвращающая значение.
-
int$sort optional Тип сортировки: SORT_STRING, SORT_NUMERIC или SORT_NATURAL.
Возвращаемое значение
mixedСм. также
nest() public
nest(callable|string $idPath, callable|string $parentPath, string $nestingKey = 'children'): self
Возвращает новую коллекцию, где значения вложены в структуру дерева на основе пути к свойству id и пути к свойству родительского id.
Параметры
-
callable|string$idPath Путь к имени столбца, используемого для определения, является ли элемент родителем другого.
-
callable|string$parentPath Путь к имени столбца, используемого для определения, является ли элемент дочерним по отношению к другому.
-
string$nestingKey optional Имя ключа, под которым вложены дочерние элементы.
Возвращаемое значение
selfnewCollection() protected
newCollection(mixed ...$args): Cake\Collection\CollectionInterface
Возвращает новую коллекцию.
Позволяет классам, использующим этот трейт, определять собственный тип возвращаемого интерфейса коллекции.
Параметры
-
mixed...$args Аргументы конструктора.
Возвращаемое значение
Cake\Collection\CollectionInterfaceoptimizeUnwrap() protected
optimizeUnwrap(): iterable
Распаковывает этот итератор и возвращает самый простой итерируемый объект, который можно использовать для извлечения данных.
Возвращаемое значение
iterableprepend() public
prepend(mixed $items): self
Добавить набор элементов в начало коллекции, создавая новую коллекцию
Параметры
-
mixed$items Элементы, которые нужно добавить в начало.
Возвращает
selfprependItem() public
prependItem(mixed $item, mixed $key = null): self
Добавить один элемент в начало, создавая новую коллекцию.
Параметры
-
mixed$item Элемент, который нужно добавить в начало.
-
mixed$key необязательно Ключ для добавления элемента. Если null, ключ будет сгенерирован.
Возвращает
selfreduce() public
reduce(callable $callback, mixed $initial = null): mixed
Сворачивает значения в этой коллекции в одно значение, как результат применения функции обратного вызова ко всем элементам. $zero — начальное состояние свертки, и каждый последующий шаг должен возвращаться функцией обратного вызова. Если $zero опущен, то первое значение коллекции будет использовано вместо него, и свертка начнется со второго элемента.
Параметры
-
callable$callback Функция обратного вызова, которая должна быть вызвана
-
mixed$initial необязательно Состояние свертки
Возвращает
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 необязательно максимальное количество элементов, которые случайным образом нужно взять из этой коллекции
Возвращает
selfserialize() public
serialize(): string
Возвращает строковое представление этого объекта, которое можно использовать для его восстановления
Возвращает
stringshuffle() public
shuffle(): self
Возвращает новую коллекцию с элементами, расположенными в случайном порядке, эта функция не сохраняет исходные ключи в коллекции.
Возвращает
selfskip() public
skip(int $length): self
Возвращает новую коллекцию, которая пропустит указанное количество элементов в начале итерации.
Параметры
-
int$length Количество элементов для пропуска.
Возвращает
selfsome() public
some(callable $callback): bool
Возвращает true, если какое-либо из значений в этой коллекции проходит проверку, заданную в обратном вызове.
Функция обратного вызова получает значение и ключ проверяемого элемента и должна возвращать true, если проверка пройдена.
Пример:
$hasYoungPeople = (new Collection([24, 45, 15]))->some(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 необязательно Порядок сортировки, либо SORT_DESC, либо SORT_ASC
-
int$sort необязательно Тип сортировки, один из SORT_STRING, SORT_NUMERIC или SORT_NATURAL
Возвращает
selfstopWhen() public
stopWhen(callable|array $condition): self
Создает новую коллекцию, которая при итерации прекратит выдавать результаты, если предоставленное условие принимает значение true.
Это полезно для работы с бесконечными итераторами или любым генератором, который может начать возвращать недействительные элементы в определенный момент. Например, при чтении строк из потока файла вы можете остановить итерацию после того, как будет достигнуто определенное значение.
Пример:
Получить массив строк в файле CSV до тех пор, пока столбец со временем не будет меньше определенной даты
$lines = (new Collection($fileLines))->stopWhen(function ($value, $key) {
return (new DateTime($value))->format('Y') < 2012;
})
->toArray(); Получить элементы до тех пор, пока не будет найден первый элемент, не соответствующий условию:
$comments = (new Collection($comments))->stopWhen(['is_approved' => false]);
Параметры
-
callable|array$condition Метод, который получит каждый из элементов и вернет true, когда итерация должна быть остановлена. Если массив, он будет интерпретирован как список условий, где ключ — путь к свойству, как принимается
Collection::extract, а значение — условие, с которым каждый элемент будет сравниваться.
Возвращает
selfsumOf() public
sumOf(callable|string|null $path = null): float|int
Возвращает общую сумму всех значений, извлеченных с помощью $matcher или из этой коллекции.
Пример:
$items = [
['invoice' => ['total' => 100]],
['invoice' => ['total' => 200]]
];
$total = (new Collection($items))->sumOf('invoice.total');
// Total: 300
$total = (new Collection([1, 2, 3]))->sumOf();
// Total: 6 Параметры
-
callable|string|null$path необязательно Имя свойства для суммирования или функция. Если значение не передано, будет использована функция тождества. которая вернет значение свойства для суммирования.
Возвращает
float|inttake() public
take(int $length = 1, int $offset = 0): self
Возвращает новую коллекцию с максимальным количеством $size элементов в порядке, в котором эта коллекция была создана. Если второй параметр передан, он определит, с какой позиции начать взятие элементов.
Параметры
-
int$length необязательно максимальное количество элементов, которые нужно взять из этой коллекции
-
int$offset необязательно Позиционное смещение с какой позиции брать элементы
Возвращает
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 $keepKeys = true): array
Возвращает массив, представляющий результаты
Параметры
-
bool$keepKeys необязательно Использовать ли ключи, возвращаемые этим набором, в качестве ключей массива. Обратите внимание, что для итераторов допустимо возвращать один и тот же ключ для разных элементов, установка этого значения в 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 необязательно Вызываемая функция, которая получит каждый из элементов набора и должна вернуть массив или объект Traversable.
Возвращает
selfunserialize() public
unserialize(string $collection): void
Десериализует переданную строку и восстанавливает экземпляр Collection
Параметры
-
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.4/class-Cake.Datasource.ResultSetDecorator.html