Spec-Zone.ru › CakePHP 3.6

Интерфейс CollectionInterface

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

Cake\Collection\CollectionInterface implements 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
    Возвращает, есть ли элементы в этой коллекции
  • jsonSerialize() public
    Преобразует набор результатов в JSON.
  • last() public
    Возвращает последний результат в этой коллекции
  • listNested() public

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

  • map() public

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

  • match() public

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

  • max() public

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

  • median() public

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

  • min() public

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

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

  • sumOf() public

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

  • take() public

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

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

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

Параметры

array|Traversable $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

Параметры

string|callable|null $matcher optional null

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

Возвращает

float|integer|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]]

Параметры

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

Параметры

integer $chunkSize
Максимальный размер каждого фрагмента
boolean $preserveKeys optional 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']
];

Параметры

callable|string $keyPath

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

callable|string $valuePath

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

callable|string|null $groupPath optional 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

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

Параметры

boolean $preserveKeys optional true

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

Возвращает

Cake\Collection\CollectionInterface

contains()source public

contains( mixed $value )

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

Параметры

mixed $value
Значение, которое нужно проверить

Возвращает

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

count()source public

count( )

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

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

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

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

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

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

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

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

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

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

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

Возвращает

integer
END_OF_DOCUMENT_MARKER

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

Возвращает

целое число

См. также

\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( )

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

Возвращает

смешанный тип
Будет возвращено первое значение в коллекции.

firstMatch()source public

firstMatch( array $conditions )

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

Параметры

массив $conditions

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

Возвращает

смешанный тип

См. также

\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

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

смешанный тип $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.

Возвращает

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

Реализация

JsonSerializable::jsonSerialize()

last()source public

last( )

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

Возвращает

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

listNested()source public

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

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

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

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

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
функция обратного вызова

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

boolean

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 )

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

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

Пример:

Получить массив строк в файле 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

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

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

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

float|целое число

take()source public

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

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

Параметры

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

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

целое число $from необязательно 0
Позиционный смещение, с которого начинать извлечение элементов

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

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 )

Возвращает массив результатов.

Параметры

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

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

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

Spec-Zone.ru

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