Flex コレクション
Flex コレクション とは、flex オブジェクトの順序付きマップ であり、リストのように使うこともできます。
flex コレクションにより、いくつかの便利なメソッドが使えるようになります。
出力をレンダリングするときに使われるメソッドや、オブジェクトを fetch するメソッド、並び替えるメソッド、などです。
[!Tip]
Flex コレクションは、 Doctrine Collections を拡張しています。
コレクションのレンダリング
render()
render( [layout], [context] ): Block コレクションをレンダリングする
パラメータ:
- layout レイアウト名 (
string) - context Twig テンプレートファイル内で使うことができるその他の変数 (‘array’)
返り値:
- Block (
object) 出力を含むHtmlBlock class
[!Note]
このメソッドを直接呼び出すのではなく、twig の{% render %}タグを使ってください。これにより、 flex コレクションの JS/CSS アセットが適切に機能します。
{% set contacts = grav.get('flex').collection('contacts') %}
{% set page = 2 %}
{% set limit = 10 %}
{% set start = (page - 1) * limit %}
<h2>Contacts:</h2>
{% render contacts.limit(start, limit) layout: 'cards' with { background: 'gray', color: 'white' } %}
use Grav\Common\Grav;
use Grav\Framework\ContentBlock\HtmlBlock;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
$page = 2;
$limit = 10;
$start = ($page-1)*$limit;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
$collection = $collection->limit($start, $limit);
/** @var HtmlBlock $block */
$block = $collection->render('cards', ['background' =>'gray', 'color' => 'white']);
}
コレクションの操作
これらのメソッドはすべて、 flex コレクションの 修正されたコピー を返します。
オリジナルの flex コレクションは、変更されないままです。
sort()
sort( orderings ): Collection コレクションを property: direction のペアでソートする。
パラメータ:
- orderings
property: directionのペア。 direction のところは、 ‘ASC’ もしくは ‘DESC’ です。 (array)
返り値:
- Collection (
object) 新しくソートされたコレクションのインスタンス。
[!Tip]
デフォルトのソート順は、 Flex Type ブループリント内でフロントエンド向けに設定できます。
{% set contacts = grav.get('flex').collection('contacts') %}
{% set contacts = contacts.sort({last_name: 'ASC', first_name: 'ASC'}) %}
<div>Displaying all contacts in alphabetical order:</div>
{% render contacts layout: 'cards' %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
$collection = $collection->sort(['last_name' => 'ASC', 'first_name' => 'ASC']);
// Collection has now be sorted by last name, first name...
}
limit()
limit( start, limit ): Collection start から始まり、 limit 個までのオブジェクトを持つコレクションの一部分を返す。
パラメータ:
- start 0始まりの最初のインデックス (
int) - limit オブジェクトの最大数 (
int)
返り値:
- Collection (
object) フィルタリングされたコレクションの新しいインスタンス
{% set contacts = grav.get('flex').collection('contacts') %}
{% set page = 3 %}
{% set limit = 6 %}
{% set start = (page - 1) * limit %}
{% set contacts = contacts.limit(start, limit) %}
<div>Displaying page {{ page|e }}:</div>
{% render contacts layout: 'cards' %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
$start = 0;
$limit = 6;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
$collection = $collection->limit($start, $limit);
// Collection contains only the objects in the current page...
}
filterBy()
filterBy( filters ): Collection property: value のペアによりフィルタリングされたコレクション
パラメータ:
- filters
property: valueのペア。コレクションのフィルタリングに使われます。 (array)
返り値:
- Collection (
object) フィルタリングされたコレクションの新しいインスタンス。
[!Tip]
デフォルトのフィルタリングは、 Flex Type ブループリント内で、フロントエンド向けに設定できます。
{% set contacts = grav.get('flex').collection('contacts') %}
{% set contacts = contacts.filterBy({'published': true}) %}
<div>Displaying only published contacts:</div>
{% render contacts layout: 'cards' %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
$start = 0;
$limit = 6;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
$collection = $collection->filterBy(['published' => true]);
// Collection contains only published objects...
}
reverse()
reverse(): Collection コレクションのオブジェクトを逆順にする。
返り値:
- Collection (
object) 逆順にしたコレクションの新しいインスタンス。
[!Tip]
sort()を使っている場合は、そこで逆順に設定することをおすすめします。余分なステップが省けます。
{% set contacts = grav.get('flex').collection('contacts') %}
{% set contacts = contacts.reverse() %}
<div>Displaying contacts in reverse ordering:</div>
{% render contacts layout: 'cards' %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
$start = 0;
$limit = 6;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
$collection = $collection->reverse();
// Collection is now in reverse ordering...
}
shuffle()
shuffle(): Collection ランダムな順番でオブジェクトをシャッフルする。
返り値:
- Collection (
object) コレクションの、ランダムな順番になった新しいインスタンス
{% set contacts = grav.get('flex').collection('contacts') %}
{% set contacts = contacts.shuffle().limit(0, 6) %}
<div>Displaying 6 random contacts:</div>
{% render contacts layout: 'cards' %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
$collection = $collection->shuffle()->limit(0,6);
// Collection contains 6 random contacts...
}
select()
select( keys ): Collection コレクションから(keys によって)オブジェクトを選択する
パラメータ:
- keys オブジェクトの選択に使われるキーのリスト (
array)
返り値:
- Collection (
object) コレクションの新しいインスタンス
{% set contacts = grav.get('flex').collection('contacts') %}
{% set selected = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'] %}
{% set contacts = contacts.select(selected) %}
<div>Displaying 4 selected contacts:</div>
{% render contacts layout: 'cards' %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
$selected = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'];
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
$collection = $collection->select($selected);
// Collection now contains the 4 selected contacts...
}
unselect()
unselect( keys ): Collection コレクションから、(keys によって)オブジェクトを取り除く
パラメータ:
- keys オブジェクトを取り除くために使われるキーのリスト (
array)
返り値:
- Collection (
object) コレクションの新しいインスタンス
{% set contacts = grav.get('flex').collection('contacts') %}
{% set ignore = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'] %}
{% set contacts = contacts.unselect(ignore) %}
<div>Displaying all but 4 ignored contacts:</div>
{% render contacts layout: 'cards' %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
$ignore = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'];
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
$collection = $collection->unselect($ignore);
// Collection now contains all but 4 ignored contacts...
}
search()
search( string, [properties], [options] ): Collection コレクションで文字列を検索する。
パラメータ:
- string 検索する文字列 (
string) - properties 検索するプロパティ。もし null (もしくは何も渡されなかった)の場合は、デフォルトを使います。 (
arrayornull) - options 検索時に使う追加オプション (
array)- starts_with:
bool - ends_with:
bool - contains:
bool - case_sensitive:
bool
- starts_with:
返り値:
- Collection (
object) コレクションのフィルタリングされた新しいインスタンス
{% set contacts = grav.get('flex').collection('contacts') %}
{% set contacts = contacts.search('Jack', ['first_name', 'last_name', 'email'], {'contains': true}) %}
<div>Displaying all search results for 'Jack':</div>
{% render contacts layout: 'cards' %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
$collection = $collection->search('Jack', ['first_name', 'last_name', 'email'], ['contains' => true]);
// Collection now contains all search results...
}
copy()
copy(): Collection コレクション内のオブジェクトをすべて clone することで、コピーを作成する
返り値:
- Collection (
object) clone されたオブジェクトを持つコレクションの新しいインスタンス
[!Warning]
コレクション内でオブジェクトを修正する場合は、常にコピーを使ってください!
{% set contacts = grav.get('flex').collection('contacts') %}
{% set contacts = contacts.shuffle().limit(0, 10) %}
{% set fakes = contacts.copy() %}
{% do fakes.setProperty('first_name', 'JACK') %}
<h2>Fake cards</h2>
{% render fakes layout: 'cards' %}
<h2>Original cards</h2>
{% render contacts layout: 'cards' %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
$collection = $collection->search('Jack', ['first_name', 'last_name', 'email'], ['contains' => true]);
// Collection now contains all search results...
}
コレクションの繰り返し
Collections は、繰り返し処理ができます。
{% set contacts = grav.get('flex').collection('contacts') %}
<h2>All contacts:</h2>
<ul>
{% for contact in contacts %}
<li>{{ contact.first_name|e }} {{ contact.last_name|e }}</li>
{% endfor %}
</ul>
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var FlexObjectInterface $object */
foreach ($collection as $object) {
// Do something with the object...
}
}
first()
first(): Object | false コレクションの最初のオブジェクトにイテレータを設定し、このオブジェクトを返します。
返り値:
- Object (
object) 最初のオブジェクト falseコレクションにオブジェクトが無かった場合
{% set contacts = grav.get('flex').collection('contacts') %}
{% set contact = contacts.first() %}
{% if contact %}
<h2>First contact:</h2>
<div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>
{% endif %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var FlexObjectInterface|false $object */
$object = $collection->first();
if ($object) {
// Do something with the object...
}
}
last()
last(): Object | false コレクションの最後のオブジェクトにイテレータを設定し、このオブジェクトを返します。
返り値:
- Object (
object) 最後のオブジェクト falseコレクションにオブジェクトが無かった場合
{% set contacts = grav.get('flex').collection('contacts') %}
{% set contact = contacts.last() %}
{% if contact %}
<h2>Last contact:</h2>
<div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>
{% endif %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var FlexObjectInterface|false $object */
$object = $collection->last();
if ($object) {
// Do something with the object...
}
}
next()
next(): object | false イテレータのポジションを次のオブジェクトに移し、この要素を返す。
返り値:
- Object (
object) 次のオブジェクト falseコレクションに、これ以上のオブジェクトが無かった場合
{% set contacts = grav.get('flex').collection('contacts') %}
{% set first = contacts.first() %}
...
{% set contact = contacts.next() %}
{% if contact %}
<h2>Next contact is:</h2>
<div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>
{% endif %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var FlexObjectInterface|false $object */
while ($object = $collection->next()) {
// Do something with the object...
}
}
current()
current(): object | false 現在のイテレータのポジションにあるオブジェクトを取得する。
返り値:
- Object** (
object) 現在のオブジェクト falseこれ以上コレクションにオブジェクトが無い場合
{% set contacts = grav.get('flex').collection('contacts') %}
{% do contacts.next() %}
{% do contacts.next() %}
...
{% set contact = contacts.current() %}
{% if contact %}
<h2>Current contact is:</h2>
<div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>
{% endif %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
while ($collection->next()) {
/** @var FlexObjectInterface|false $object */
$object = $collection->current();
// Do something with the object...
}
}
key()
key(): key | null 現在のイテレータのポジションがあるオブジェクトのキーを取得
返り値:
- key (
string) オブジェクトのキー nullコレクションにこれ以上オブジェクトが無い場合
{% set contacts = grav.get('flex').collection('contacts') %}
{% do contacts.next() %}
{% do contacts.next() %}
...
{% set key = contacts.key() %}
{% if key %}
Current contact key is: <strong>{{ key|e }}</strong>
{% endif %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
while ($collection->next()) {
$key = $collection->key();
// Do something with the key...
}
}
オブジェクト / キーの取得
配列のようにアクセス
Collections は、連想配列型や map 型のようにアクセス可能です。
[!Note]
与えられたキーのオブジェクトがコレクションに無かった場合、nullが返ります。
{% set contacts = grav.get('flex').collection('contacts') %}
{% set contact = contacts['ki2ts4cbivggmtlj']
{# Do something #}
{% if contact %}
{# Got Bruce Day #}
Email for {{ contact.first_name|e }} {{ contact.last_name|e }} is {{ contact.email|e }}
{% else %}
Oops, contact has been removed!
{% endif %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var FlexObjectInterface|null $object */
$object = $collection['ki2ts4cbivggmtlj'];
if ($object) {
// Object exists, do something with it...
}
}
get()
get( key ): Object | null 特定のキーでオブジェクトを取得する。
パラメータ:
- key オブジェクトのキー (
string)
返り値:
- Object (
object) null与えられたキーのオブジェクトがコレクションに無かった場合
かわりに、 配列のようにアクセス する方法もあります。
{% set contacts = grav.get('flex').collection('contacts') %}
{% set contact = contacts.get('ki2ts4cbivggmtlj')
{# Do something #}
{% if contact %}
{# Got Bruce Day #}
Email for {{ contact.first_name|e }} {{ contact.last_name|e }} is {{ contact.email|e }}
{% else %}
Oops, contact has been removed!
{% endif %}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var FlexObjectInterface|null $object */
$object = $collection->get('ki2ts4cbivggmtlj');
if ($object) {
// Object exists, do something with it...
}
}
配列のようなコレクション
getKeys()
getKeys(): array コレクションのすべてのキーを取得
返り値:
arrayキーのリスト
{% set contacts = grav.get('flex').collection('contacts') %}
{% set keys = contacts.keys() %}
Keys are: {{ keys|join(', ')|e }}
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var string[] $keys */
$keys = $collection->getKeys();
$keysList = implode(', ', $keys);
}
GetObjectKeys()
GetObjectKeys(): array : getKeys() メソッドのエイリアス(別名)
返り値:
arrayキーのリスト
getValues()
getValues(): array コレクションのすべてのオブジェクトを取得する
コレクションを array 型に変換します。キーは保存されません。
返り値:
- Objects のリスト (
array)
{% set contacts = grav.get('flex').collection('contacts') %}
{% set list = contacts.values() %}
<ol>
{% for i,object in list %}
<li>#{{ (i+1)|e }}: {{ object.email|e }}</li>
{% endfor %}
</ol>
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var FlexObjectInterface[] $objects */
$objects = $collection->getValues();
foreach ($objects as $pos => $object) {
// Do something with the object and its position...
}
}
toArray()
toArray(): array コレクションの、PHP ネイティブの array を取得します。
getValues() に似ていますが、キーが保存されます。
返り値:
array:key: Objectペアのリスト
{% set contacts = grav.get('flex').collection('contacts') %}
{% set list = contacts.toArray() %}
<ol>
{% for key,object in list %}
<li>ID: {{ key|e }}: {{ object.email|e }}</li>
{% endfor %}
</ol>
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var array<string, FlexObjectInterface> $objects */
$objects = $collection->toArray();
foreach ($objects as $key => $object) {
// Do something with the object and its key...
}
}
slice()
slice( offset, length ): array コレクションから offset されたポジションから初めて、 length 個の要素をスライスしたものを抽出する。
パラメータ:
- offset 0始まりのオフセットの最初 (
int) - length オブジェクトの最大数 (
int)
返り値:
array:key: Objectペアのリスト
[!Tip]
このメソッドは、ページネーションに使えます。
{% set contacts = grav.get('flex').collection('contacts') %}
{% set list = contacts.slice(10, 5) %}
<div>Displaying 5 emails starting from offset 10:</div>
<ol>
{% for key,object in list %}
<li>ID: {{ key|e }}: {{ object.email|e }}</li>
{% endfor %}
</ol>
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var array<string, FlexObjectInterface> $objects */
$objects = $collection->slice(10, 5);
// Do something with the object and its key...
}
chunk()
chunk( size ): array コレクションを、 size 個のオブジェクトに分ける
パラメータ:
- size チャンクするサイズ (
int)
返り値:
array:key: Objectペアの2次元リスト
[!Tip]
このメソッドは、コンテンツを行と列に分けるときに利用できます。
{% set contacts = grav.get('flex').collection('contacts') %}
{% set columns = contacts.limit(0, 10).chunk(5) %}
<div>Displaying two columns of 5 emails each:</div>
<div class="columns">
{% for column,list in columns %}
<div class="column">
{% for object in list %}
<div>{{ object.email|e }}</div>
{% endfor %}
</div>
{% endfor %}
</div>
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var array $columns */
$columns = $collection->limit(0, 10)->chunk(5);
/** @var
int $column
array<string, FlexObjectInterface> $objects
*/
foreach ($columns as $column => $objects) {
// Do something with the objects...
}
}
}
group()
group( property ): array プロパティでコレクション内のオブジェクトをグループ分けし、連想配列として返す。
パラメータ:
- property オブジェクトのグループ分けに使われるプロパティ名。 (
string)
返り値:
array2次元のkey: Objectペアのリスト。プロパティ値は最初のレベルのキーになります。
{% set contacts = grav.get('flex').collection('contacts') %}
{% set by_name = contacts.sort({last_name: 'ASC', first_name: 'ASC'}).group('last_name') %}
<div>Displaying contacts grouped by last name:</div>
<div>
{% for last_name,list in by_name %}
{{ last_name|e }}:
<ul>
{% for object in list %}
<li>{{ object.first_name|e }}</li>
{% endfor %}
</ul>
{% endfor %}
</div>
use Grav\Common\Grav;
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
/** @var FlexCollectionInterface|null $collection */
$collection = Grav::instance()->get('flex')->getCollection('contacts');
if ($collection) {
/** @var array $byName */
$byName = $collection->group('last_name');
/** @var
string $lastName
array<string, FlexObjectInterface> $objects
*/
foreach ($byName as $lastName => $objects) {
// Do something with the objects...
}
}
}
オブジェクトを追加・削除
add()
add( Object ) コレクションの最後にオブジェクトを追加する。
パラメータ:
- Object 追加するオブジェクト (
object)
remove()
remove( key ): Object | null コレクションから、特定のインデックスを持つ要素を削除する。
パラメータ:
- key 削除するオブジェクトのキー。 (
object)
返り値:
- Object 削除されたオブジェクト (
object) もしくは、見つからなければnull
removeElement()
removeElement( Object ): bool 特定のオブジェクトについて、それがコレクション内に見つかった場合に削除する
パラメータ:
- Object 削除するオブジェクト (
object)
返り値:
trueそのオブジェクトがコレクション内似合った場合。falseそうでない場合。
clear()
clear() コレクションをクリアし、すべての要素を削除する。
テスト
containsKey()
containsKey( key ): bool 特定のキーを持つオブジェクトがコレクション内にあるかどうかチェックする。
パラメータ:
- key テストするキー (
string)
返り値:
trueコレクション内にオブジェクトがあった場合。falseそうでない場合。
contains()
contains( object ): bool コレクション内に要素があるかどうかチェックする。
パラメータ:
- Object テストするオブジェクト (
object)
返り値:
trueコレクション内にオブジェクトがあった場合。falseそうでない場合。
indexOf()
indexOf( object ): string | false 与えられたオブジェクトの index/key を取得する
パラメータ:
- Object テストするオブジェクト (
object)
返り値:
stringオブジェクトの index/key 。falseオブジェクトが見つからなかった場合。
isEmpty()
isEmpty(): bool Checks whether the collection is empty (contains no objects).
返り値:
trueif collection is empty,falseotherwise
count()
count(): int
返り値:
intコレクションにあるオブジェクトの数
オブジェクトへの一斉アクション
hasProperty()
hasProperty( property ): array オブジェクトのキーにプロパティが定義されているかどうかについて、 key: boolean ペアのリストを返す。
パラメータ:
- property プロパティ名 (
string)
返り値:
key: boolペアの配列。keyはオブジェクトのキー、boolは true もしくは false。
getProperty()
getProperty( property, default ): array 各オブジェクトについて、 key: value のリストを返す。
パラメータ:
- property プロパティ名 (
string)
返り値:
key: valueペアの配列。keyはオブジェクトのキー、valueはプロパティの値。
setProperty()
setProperty( property, value ): Collection コレクション内のすべてのオブジェクトで、プロパティに新しい値を設定する。
パラメータ:
- property プロパティ名 (
string) - value 新しい値 (
mixed)
返り値:
- Collection (
object) メソッド呼び出しを連鎖させるためのコレクション
[!Warning]
このメソッドは、すべてのコレクションで共有されているオブジェクトインスタンスを修正します。それを意図しない場合、このメソッドを使う前に、コレクションを copy() してください。
defProperty()
defProperty( property, default ): Collection コレクション内のすべてのオブジェクトに、プロパティのデフォルト値を定義する。
パラメータ:
- property プロパティ名 (
string) - default デフォルト値 (
mixed)
返り値:
- Collection (
object) メソッド呼び出しを連鎖させるためのコレクション
[!Warning]
このメソッドは、すべてのコレクションで共有されているオブジェクトインスタンスを修正します。それを意図しない場合、このメソッドを使う前に、コレクションを copy() してください。
unsetProperty()
unsetProperty( property ): Collection コレクション内のすべてのオブジェクトで、そのプロパティの値を削除する。
パラメータ:
- property プロパティ名 (
string)
返り値:
- Collection (
object) メソッド呼び出しを連鎖させるためのコレクション
[!Warning]
このメソッドは、すべてのコレクションで共有されているオブジェクトインスタンスを修正します。それを意図しない場合、このメソッドを使う前に、コレクションを copy() してください。
call()
call( method, arguments): array コレクション内のすべてのオブジェクトで、メソッドを呼び出します。各呼び出しの結果を返します。
パラメータ:
- method メソッド名 (
string) - arguments 引数のリスト (
array)
返り値:
key: resultペアのリスト (array)
[!Warning]
このメソッドがオブジェクトを修正する場合、このメソッドを使う前に、コレクションを copy() してください。
getTimestamps()
getTimestamps(): array 各オブジェクトについて key: timestamp のリストを返します。
返り値:
key: timestampペアのリスト。ここで、timestamp は整数値です。 (array)
getStorageKeys()
getStorageKeys(): array 各オブジェクトについて、 key: storage_key のリストを返す。
返り値:
key: storage_keyペアのリスト (array)
getFlexKeys()
getFlexKeys(): array 各オブジェクトについて、key: flex_key のリストを返します。
返り値:
key: flex_keyペアのリスト (array)
withKeyField()
withKeyField( field ): Collection 異なるキーの新しいコレクションを返します。
パラメータ:
- field キーのフィールド (
string)- ‘key’: ディレクトリによって使われるデフォルトキー
- ‘storage_key’: ストレージ層のキー
- ‘flex_key’: ディレクトリを知らなくても使えるユニークなキー
返り値:
- Collection (
object) そのコレクション。ただし、新しいキーでインデックスされています。
クロージャーによるテスト( PHP のみ)
exists()
exists( Closure ): bool 与えられたクロージャーを満足するオブジェクトが存在するかテストします。
パラメータ:
- Closure 各オブジェクトのテストに使われるメソッド。
返り値:
boolコールバック関数が true を返すオブジェクトが1つでもある場合に true。
forAll()
forAll( Closure ): bool コレクション内のすべてのオブジェクトでクロージャーがtrueを返すかテストします。
パラメータ:
- Closure 各オブジェクトのテストに使われるメソッド。
返り値:
boolコールバック関数がすべてのオブジェクトで true を返す場合に true。
クロージャーによるフィルタリング(PHPのみ)
filter()
filter( Closure ): Collection コレクション内で、クロージャーが true を返すオブジェクトをすべて返します。
要素の順序は保たれます。
パラメータ:
- Closure ひとつのオブジェクトをテストするのに使われるメソッド。
返り値:
- Collection (
object) コールバック関数がtrueを返すすべてのオブジェクトを持つ新しいコレクション。
map()
map( Closure ): Collection 与えられた関数をコレクション内の各オブジェクトに適用し、その関数が返したオブジェクトからなる新しいコレクションを返します。
パラメータ:
- Closure ひとつのオブジェクトをテストするのに使われるメソッド。
返り値:
- Collection (
object) コールバック関数の返り値であるオブジェクトからなる新しいコレクション。
collectionGroup()
collectionGroup( property ): Collection[] フィールドによってコレクション内のオブジェクトをグルーピングし、コレクションの連想配列として、それらを返します。
パラメータ:
- property (
string) オブジェクトをグルーピングするために使われるプロパティ。
返り値:
array複数のコレクションの配列。キーはプロパティの値。
matching()
matching( Criteria ): Collection Criteria 表現にマッチするすべてのオブジェクトを選択し、それらのオブジェクトからなる新しいコレクションを返します。
パラメータ:
- Criteria 表現
返り値:
- Collection (
object) criteria にマッチするオブジェクトからなる新しいコレクション。
[!Tip]
Doctrine ドキュメントの Expression Builder と、 Expressions をチェックしてください。
orderBy()
orderBy( array ): Collection property/value ペアのリストによりコレクションを並べ直します。
パラメータ:
array
返り値:
- Collection (
object) 新しい順番による新しいコレクション。
partition()
partition( Closure ): array Closure に従って、コレクションを2つのコレクションに分割します。
結果のコレクションでは、キーが保持されます。
パラメータ:
- Closure ひとつのオブジェクトを分割するために使われるメソッド。true もしくは false を返します。
返り値:
arrayパーティションに分けられたオブジェクト[[a, b], [c, d, e]]