Spec-Zone.ru › CakePHP 3.8

Интерфейс CollectionInterface

Описывает методы, которые должен реализовывать объект Collection. 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
    Возвращает последний результат в этой коллекции
  • 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 )

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

Параметры

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

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

Параметры

строка $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( )

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

Возвращает

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

lazy()source public

lazy( )

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

К ленивой коллекции можно обращаться только один раз. Повторная попытка приводит к ошибке.

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

Cake\Collection\CollectionInterface

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]

Параметры

строка|целое число $dir необязательно 'desc'
Направление возврата элементов
строка|обратный вызов $nestingKey необязательно 'children'

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

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

Cake\Collection\CollectionInterface

map()source public

map( callable $c )

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

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

Пример:

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

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

Параметры

обратный вызов $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']]
]

Параметры

массив $conditions

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

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

Cake\Collection\CollectionInterface

max()source public

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

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

Параметры

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

Параметры

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

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

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

float|integer|null

min()source public

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

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

Параметры

обратный вызов|строка $callback
обратный вызов или имя столбца для сортировки
целое число $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.

Параметры

обратный вызов|строка $idPath

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

обратный вызов|строка $parentPath

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

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

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

Cake\Collection\CollectionInterface

reduce()source public

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

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

Параметры

обратный вызов $c
Функция обратного вызова для вызова
смешанный тип $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;
});

Параметры

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

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

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

Cake\Collection\CollectionInterface

sample()source public

sample( integer $size = 10 )

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

Параметры

целое число $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;
});

Параметры

callable $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;
}

Параметры

callable|string $callback
обратный вызов или имя столбца для использования при сортировке
integer $dir optional SORT_DESC
либо SORT_DESC, либо SORT_ASC
integer $type optional \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]);

Параметры

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

Параметры

string|callable|null $matcher optional null

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

Возвращает

float|integer

take()source public

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

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

Параметры

integer $size optional 1

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

integer $from optional 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];

Параметры

integer $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);
});

Параметры

callable $handler

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

Возвращает

Cake\Collection\CollectionInterface

toArray()source public

toArray( boolean $preserveKeys = true )

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

Параметры

boolean $preserveKeys optional true

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

Возвращает

array

toList()source public

toList( )

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

Возвращает

array

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

Параметры

callable $transformer optional 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]]

Параметры

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

Параметры

array|Traversable $items
$items Наборы данных для объединения.
callable $callable
Функция для объединения элементов вместе.

Возвращает

Cake\Collection\CollectionInterface

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

cartesianProduct()source public

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

Параметры

callable $operation необязательно
callable $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.8/class-Cake.Collection.CollectionInterface.html

Spec-Zone.ru

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