Spec-Zone.ru › CakePHP 3.2

Интерфейс 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

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

  • buffered() public

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

  • chunk() public
    Разбивает коллекцию на меньшие массивы заданного размера.
  • combine() public

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

  • compile() public

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

  • contains() public

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

  • countBy() public

    Сортирует список в группы и возвращает количество элементов в каждой группе. Аналогично groupBy, но вместо возвращения списка значений возвращает количество значений в этой группе.

  • 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

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

  • min() public

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

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

  • unfold() public

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

  • unwrap() public

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

  • zip() public

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

  • zipWith() public

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

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

append()source public

append( array|Traversable $items )

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

Параметры

array|Traversable $items
Список элементов.

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

Cake\Collection\CollectionInterface

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

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 присутствует в этом наборе

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

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

Параметры

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 optional null

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

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

Cake\Collection\CollectionInterface

first()source public

first( )

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

Возвращает

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

firstMatch()source public

firstMatch( array $conditions )

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

Параметры

массив $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],
 ]
];

Параметры

вызываемый объект|строка $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'],
];

Параметры

вызываемый объект|строка $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( )

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

Возвращает

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]

Параметры

строка|целое число $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()
END_OF_DOCUMENT_MARKER

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;

Параметры

обратный вызов|строка $callback
обратный вызов или имя столбца для сортировки
целое число $type необязательно SORT_NUMERIC

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

Возвращает

смешанный
Значение нижнего элемента в наборе

См. также

\Cake\Collection\CollectionInterface::sortBy()

nest()source public

nest( callable|string $idPath , callable|string $parentPath )

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

Параметры

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

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

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

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

Возвращает

Cake\Collection\CollectionInterface

reduce()source public

reduce( callable $c , mixed $zero null )

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

Параметры

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

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

Параметры

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

Возвращает

логическое

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


sortBy()source public

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

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

Обратный вызов будет получать в качестве первого аргумента каждый из элементов в $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 до тех пор, пока столбец timestamp меньше определенной даты

$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

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

Возвращает

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

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)

Возвращает

массив

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 необязательно null

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

Возвращает

Cake\Collection\CollectionInterface

unwrap()source public

unwrap( )

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

Возвращает

Iterator

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 () {
  return array_sum(func_get_args());
});
$zipped->toList(); // returns [9, 12]; [(1 + 3 + 5), (2 + 4 + 6)]

Параметры

array|Traversable $items
$items Коллекции для объединения.
callable $callable
Функция для объединения элементов.

Возвращает

Cake\Collection\CollectionInterface

© 2005–2016 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.
http://api.cakephp.org/3.2/class-Cake.Collection.CollectionInterface.html

Spec-Zone.ru

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