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 (もしくは何も渡されなかった)の場合は、デフォルトを使います。 (
array
ornull
) - 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
)
返り値:
array
2次元の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).
返り値:
true
if collection is empty,false
otherwise
count()
count(): int
返り値:
int
Number of objects in the collection
オブジェクトへの一斉アクション
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
コールバック関数がすべtねおオブジェクトで 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]]