Spec-Zone.ru › CakePHP 3.7

Интерфейс CollectionInterface

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

Cake\Collection\CollectionInterface реализует Iterator, JsonSerializable

Прямые реализации

  • Cake\Collection\Collection
  • Cake\Collection\Iterator\ZipIterator
  • Cake\Datasource\ResultSetInterface

Косвенные реализации

  • Cake\Collection\Iterator\BufferedIterator
  • Cake\Collection\Iterator\ExtractIterator
  • Cake\Collection\Iterator\FilterIterator
  • Cake\Collection\Iterator\InsertIterator
  • Cake\Collection\Iterator\NestIterator
  • Cake\Collection\Iterator\NoChildrenIterator
  • Cake\Collection\Iterator\ReplaceIterator
  • Cake\Collection\Iterator\SortIterator
  • Cake\Datasource\ResultSetDecorator
  • Cake\ORM\ResultSet
Пространство имен: Cake\Collection
Расположение: Collection/CollectionInterface.php

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

  • append() public

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

  • avg() public

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

  • buffered() 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

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

  • filter() public

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

  • first() public
    Возвращает первый результат в этой коллекции
  • firstMatch() public

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

  • groupBy() public

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

  • indexBy() public

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

  • insert() public

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

  • isEmpty() public
    Возвращает значение true, если в этой коллекции есть элементы
  • jsonSerialize() public
    Преобразует набор результатов в JSON.
  • last() public
    Возвращает последний результат в этой коллекции
  • lazy() public

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

  • listNested() public

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

  • map() public

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

  • match() public

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

  • max() public

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

  • median() public

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

  • min() public

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

  • nest() public

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

  • reduce() public

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

  • reject() public

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

  • sample() public

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

  • shuffle() public

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

  • skip() public

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

  • some() public

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

  • sortBy() public

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

  • stopWhen() public

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

  • sumOf() public

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

  • take() public

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

  • takeLast() public
    Возвращает последние N элементов коллекции
  • through() public

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

  • toArray() public
    Возвращает массив результатов
  • toList() public

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

  • transpose() public
    Транспонирует строки и столбцы в столбцы и строки
  • unfold() public

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

  • unwrap() public

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

  • zip() public

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

  • zipWith() public

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

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

append()source public

append( array|Traversable $items )

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

Параметры

массив|Перечисляемый $items
Список элементов.

Возвращает

Cake\Collection\CollectionInterface

avg()source public

avg( string|callable|null $matcher = null )

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

Пример:

$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

Параметры

строка|вызываемый объект|null $matcher необязательно null

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

Возвращает

число с плавающей точкой|целое число|null

buffered()source public

buffered( )

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

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

Возвращает

Cake\Collection\CollectionInterface

chunk()source public

chunk( integer $chunkSize )

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

Пример:

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface

chunkWithKeys()source public

chunkWithKeys( integer $chunkSize , boolean $preserveKeys = true )

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

Пример:

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

Параметры

целое число $chunkSize
Максимальный размер каждого фрагмента
логическое $preserveKeys необязательно true
Если ключи массива должны быть сохранены

Возвращает

Cake\Collection\CollectionInterface

combine()source public

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

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

Примеры:

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

Параметры

вызываемый объект|строка $keyPath

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

вызываемый объект|строка $valuePath

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

вызываемый объект|строка|null $groupPath необязательно null

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

Возвращает

Cake\Collection\CollectionInterface

compile()source public

compile( boolean $preserveKeys = true )

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

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

Пример:

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

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

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

Параметры

логическое $preserveKeys необязательно true

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

Возвращает

Cake\Collection\CollectionInterface

contains()source public

contains( mixed $value )

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

Параметры

смешанный $value
Значение для проверки

Возвращает

логическое
true, если $value присутствует в этой коллекции

count()source public

count( )

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

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

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

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

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

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

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

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

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

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

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

Возвращает

целое число

countBy()source public

countBy( callable|string $callback )

Сортирует список по группам и возвращает количество элементов в каждой группе. Аналогично 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 $callback

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

Возвращает

Cake\Collection\CollectionInterface

countKeys()source public

countKeys( )

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

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

Возвращает

integer

См. также

\Cake\Collection\CollectionInterface::count()

each()source public

each( callable $c )

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

Пример:

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

Параметры

callable $c

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

Возвращает

Cake\Collection\CollectionInterface

every()source public

every( callable $c )

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

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

Пример:

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

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

Параметры

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

Возвращает

boolean

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


extract()source public

extract( string $matcher )

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

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

Если столбец или свойство не были найдены для конкретного элемента в коллекции, эта позиция заполняется 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]

Параметры

string $matcher

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

Возвращает

Cake\Collection\CollectionInterface

filter()source public

filter( callable $c = null )

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

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

Пример:

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

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

Параметры

callable $c необязательно null

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

Возвращает

Cake\Collection\CollectionInterface

first()source public

first( )

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

Возвращает

mixed
Будет возвращено первое значение в коллекции.

firstMatch()source public

firstMatch( array $conditions )

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

Параметры

array $conditions

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

Возвращает

mixed

См. также

\Cake\Collection\CollectionInterface::match()

groupBy()source public

groupBy( callable|string $callback )

Разбивает коллекцию на наборы, сгруппированные по результату выполнения каждого значения через обратный вызов. Если $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 $callback

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

Возвращает

Cake\Collection\CollectionInterface

indexBy()source public

indexBy( callable|string $callback )

Принимая список и функцию обратного вызова, возвращающую ключ для каждого элемента в списке (или имя свойства), возвращает объект с индексом каждого элемента. Похоже на 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 $callback

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

Возвращает

Cake\Collection\CollectionInterface

insert()source public

insert( string $path , mixed $values )

Возвращает новую коллекцию, содержащую каждый из элементов, найденных в $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

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

Возвращает

Cake\Collection\CollectionInterface

isEmpty()source public

isEmpty( )

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

Пример:

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

Возвращает

boolean

jsonSerialize()source public

jsonSerialize( )

Преобразовать результат в JSON.

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

Возвращает

array
Данные для преобразования в JSON

Реализация

JsonSerializable::jsonSerialize()

last()source public

last( )

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

Возвращает

mixed
Будет возвращено последнее значение в наборе.

lazy()source public

lazy( )

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

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

Возвращает

Cake\Collection\CollectionInterface

listNested()source public

listNested( string|integer $dir = 'desc' , string|callable $nestingKey = 'children' )

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

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

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

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

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

  • desc: TreeIterator::SELF_FIRST
  • asc: TreeIterator::CHILD_FIRST
  • leaves: TreeIterator::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|integer $dir необязательный 'desc'
Направление возврата элементов
string|callable $nestingKey необязательный 'children'

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

Возвращает

Cake\Collection\CollectionInterface

map()source public

map( callable $c )

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

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

Пример:

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

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

Параметры

callable $c

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

Возвращает

Cake\Collection\CollectionInterface

match()source public

match( array $conditions )

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

Возвращает

Cake\Collection\CollectionInterface

max()source public

max( callable|string $callback , integer $type = \SORT_NUMERIC )

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

Примеры:

// 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 $callback
обратный вызов или имя столбца для сортировки
integer $type необязательный \SORT_NUMERIC

тип сравнения, выполняемый, либо SORT_STRING, либо SORT_NUMERIC, либо SORT_NATURAL

Возвращает

mixed
Значение верхнего элемента в наборе

См. также

\Cake\Collection\CollectionIterface::sortBy()

median()source public

median( string|callable|null $matcher = null )

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

Пример:

$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

Параметры

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

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

Возвращает

float|integer|null

min()source public

min( callable|string $callback , integer $type = \SORT_NUMERIC )

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

Примеры:

// 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 $callback
обратный вызов или имя столбца для сортировки
integer $type необязательный \SORT_NUMERIC

тип сравнения, выполняемый, либо SORT_STRING, либо SORT_NUMERIC, либо SORT_NATURAL

Возвращает

mixed
Значение нижнего элемента в наборе

См. также

\Cake\Collection\CollectionInterface::sortBy()

nest()source public

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

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

Параметры

callable|string $idPath

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

callable|string $parentPath

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

string $nestingKey необязательный 'children'
Имя ключа, под которым вложены дочерние элементы

Возвращает

Cake\Collection\CollectionInterface

reduce()source public

reduce( callable $c , mixed $zero = null )

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

Параметры

callable $c
Функция обратного вызова для вызова
mixed $zero необязательный null
Состояние сворачивания

Возвращает

mixed

reject()source public

reject( callable $c )

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

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

Пример:

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

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

Параметры

callable $c

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

Возвращает

Cake\Collection\CollectionInterface

sample()source public

sample( integer $size = 10 )

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

Параметры

integer $size необязательный 10

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

Возвращает

Cake\Collection\CollectionInterface

shuffle()source public

shuffle( )

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

Возвращает

Cake\Collection\CollectionInterface

skip()source public

skip( integer $howMany )

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

Параметры

целое число $howMany
Количество элементов для пропуска.

Возвращает

Cake\Collection\CollectionInterface

some()source public

some( callable $c )

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

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

Пример:

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

Параметры

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

Возвращает

булево значение

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


sortBy()source public

sortBy( callable|string $callback , integer $dir = SORT_DESC , integer $type = \SORT_NUMERIC )

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

Параметры

обратный вызов/строка $callback
обратный вызов или имя столбца для использования при сортировке
целое число $dir необязательно SORT_DESC
либо SORT_DESC, либо SORT_ASC
целое число $type необязательно \SORT_NUMERIC

тип сравнения для выполнения, либо SORT_STRING, SORT_NUMERIC или SORT_NATURAL

Возвращает

Cake\Collection\CollectionInterface

stopWhen()source public

stopWhen( callable $condition )

Создает новую коллекцию, которая при итерации прекратит вывод результатов, если предоставленное условие оценивается как 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]);

Параметры

обратный вызов $condition

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

Возвращает

Cake\Collection\CollectionInterface

sumOf()source public

sumOf( string|callable|null $matcher = null )

Возвращает общую сумму всех значений, извлеченных с помощью $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

Параметры

строка/обратный вызов/null $matcher необязательно null

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

Возвращает

число с плавающей точкой/целое число

take()source public

take( integer $size = 1 , integer $from = 0 )

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

Параметры

целое число $size необязательно 1

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

целое число $from необязательно 0
положение смещения, с которого следует брать элементы

Возвращает

Cake\Collection\CollectionInterface

takeLast()source public

takeLast( integer $howMany )

Возвращает последние 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];

Параметры

целое число $howMany
Количество элементов в конце коллекции

Возвращает

Cake\Collection\CollectionInterface

through()source public

through( callable $handler )

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

Пример:

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

Параметры

обратный вызов $handler

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

Возвращает

Cake\Collection\CollectionInterface

toArray()source public

toArray( boolean $preserveKeys = true )

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

Параметры

булево значение $preserveKeys необязательно true

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

Возвращает

массив

toList()source public

toList( )

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

Возвращает

массив

transpose()source public

transpose( )

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

Пример:

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

Возвращает

Cake\Collection\CollectionInterface

unfold()source public

unfold( callable $transformer = null )

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

Функция преобразования будет получать значение и ключ для каждого из элементов в коллекции в указанном порядке, и она должна возвращать массив или 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();
});

Параметры

обратный вызов $transformer необязательно null

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

Возвращает

Cake\Collection\CollectionInterface

unwrap()source public

unwrap( )

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

Возвращает

Traversable
END_OF_DOCUMENT_MARKER

zip()source public

zip( array|Traversable $items )

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

Пример:

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

Параметры

массив|Итерируемый $items
$items Наборы данных для объединения.

Возвращает

Cake\Collection\CollectionInterface

zipWith()source public

zipWith( array|Traversable $items , callable $callable )

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

Результирующий элемент будет значением возвращаемым функцией $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)]

Параметры

массив|Итерируемый $items
$items Наборы данных для объединения.
вызываемая функция $callable
Функция, используемая для объединения элементов.

Возвращает

Cake\Collection\CollectionInterface

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

cartesianProduct()source public

cartesianProduct( callable $operation = , callable $filter = )

Параметры

вызываемая функция $operation необязательно
вызываемая функция $filter необязательно

Возвращает

Cake\Collection\CollectionInterface

© 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/3.7/class-Cake.Collection.CollectionInterface.html

Spec-Zone.ru

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