Spec-Zone.ru › CakePHP 3.1

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

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

appendsource public

append( array|Traversable $items )

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

bufferedsource public

buffered( )

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

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

chunksource 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
\Cake\Collection\CollectionInterface

combinesource 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 необязательно null
путь имени столбца для использования в качестве ключа группировки родительских элементов или функция, возвращающая ключ из предоставленного элемента

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

containssource public

contains( mixed $value )

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

Параметры

mixed $value
Значение для проверки.

Возвращает

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

countBysource 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
\Cake\Collection\CollectionInterface

eachsource public

each( callable $c )

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

Пример:

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

everysource 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

extractsource 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
\Cake\Collection\CollectionInterface
END_OF_DOCUMENT_MARKER

filtersource public

filter( callable $c null )

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

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

Пример:

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

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

firstsource public

first( )

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

Возвращает

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

firstMatchsource public

firstMatch( array $conditions )

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

Параметры

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

Возвращает

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

См. также

Cake\Collection\CollectionInterface::match()

groupBysource 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
\Cake\Collection\CollectionInterface

indexBysource 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
\Cake\Collection\CollectionInterface

insertsource 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
\Cake\Collection\CollectionInterface

isEmptysource public

isEmpty( )

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

Пример:

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

Возвращает

boolean
bool

jsonSerializesource public

jsonSerialize( )

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

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

Возвращает

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

Реализация

JsonSerializable::jsonSerialize()

lastsource public

last( )

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

Возвращает

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

listNestedsource 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
\Cake\Collection\CollectionInterface

mapsource public

map( callable $c )

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

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

Пример:

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

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

matchsource 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
\Cake\Collection\CollectionInterface
END_OF_DOCUMENT_MARKER

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

Параметры

callable|string $callback
callback или имя столбца для сортировки
integer $type необязательно SORT_NUMERIC
тип сравнения, либо SORT_STRING, SORT_NUMERIC или SORT_NATURAL

Возвращает

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

См. также

\Cake\Collection\CollectionIterface::sortBy()

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

Параметры

callable|string $callback
callback или имя столбца для сортировки
integer $type необязательно SORT_NUMERIC
тип сравнения, либо SORT_STRING, SORT_NUMERIC или SORT_NATURAL

Возвращает

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

См. также

Cake\Collection\CollectionInterface::sortBy()

nestsource public

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

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

Параметры

callable|string $idPath
путь к имени столбца для определения, является ли элемент родителем другого
callable|string $parentPath
путь к имени столбца для определения, является ли элемент потомком другого

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

reducesource public

reduce( callable $c , mixed $zero null )

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

Параметры

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

rejectsource public

reject( callable $c )

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

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

Пример:

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

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

samplesource public

sample( integer $size 10 )

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

Параметры

integer $size необязательно 10
максимальное количество элементов для случайного взятия из этого набора

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

shufflesource public

shuffle( )

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

skipsource public

skip( integer $howMany )

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

somesource public

some( callable $c )

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

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

Пример:

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

Параметры

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

Возвращает

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

sortBysource public

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

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

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

Пример:

$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
callback или имя столбца для сортировки
integer $dir необязательно SORT_DESC
либо SORT_DESC, либо SORT_ASC
integer $type необязательно SORT_NUMERIC
тип сравнения, либо SORT_STRING, SORT_NUMERIC или SORT_NATURAL

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

stopWhensource public

stopWhen( callable $condition )

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

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

Пример:

Получить массив строк в 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]);

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

sumOfsource public

sumOf( string|callable $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 $matcher необязательно null
Имя свойства для суммирования или функция, которая вернёт значение свойства для суммирования. Если значение не передано, будет использована функция тождества.

Возвращает

float|integer
float|int

takesource public

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

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

throughsource public

through( callable $handler )

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

Пример:

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
\Cake\Collection\CollectionInterface

toArraysource public

toArray( boolean $preserveKeys true )

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

Параметры

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

Возвращает

array
массив

toListsource public

toList( )

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

Возвращает

array
массив

unfoldsource 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
\Cake\Collection\CollectionInterface

unwrapsource public

unwrap( )

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

Возвращает

Iterator
\Iterator

zipsource 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
\Cake\Collection\CollectionInterface

zipWithsource 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)]

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
\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.1/class-Cake.Collection.CollectionInterface.html

Spec-Zone.ru

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