Flex Collection

Flex Collection est une carte ordonnée d'objets qui peut également être utilisée comme une liste.

Collection fournit quelques méthodes utiles, qui peuvent être utilisées pour rendre la sortie, récupérer des objets, filtrer et trier, etc.

ASTUCE : Flex Collection étend Doctrine Collections.

Collection de rendu.

render().

render( [layout], [context] ): Block Rend la collection.

Paramètres:

  • layout Nom de la mise en page (string)
  • context Variables supplémentaires pouvant être utilisées dans le fichier de modèle Twig (array)

Retour:

  • Bloc (object) Classe HtmlBlock contenant la sortie
REMARQUE : dans twig, il existe une balise {% render %}, qui doit être utilisée au lieu d'appeler directement la méthode. Cela permettra aux ressources JS/CSS de la collection de fonctionner correctement.

- Twig

{% 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' } %}

- PHP

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

}

Manipulation de collection.

Toutes ces méthodes renvoient une copie modifiée de la collection. La collection originale reste inchangée.

sort().

sort( orderings ): Collection Trie la collection par liste paires de property : direction.

Paramètres:

  • orderings Ordres Paires de property : direction où la direction est soit 'ASC' soit 'DESC' (array)

Retour:

  • Collection (object) Nouvelle instance triée de la collection
ASTUCE : L'ordre de tri par défaut peut être défini pour le frontend dans les blueprints Flex Type.

- Twig

{% 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' %}

- PHP

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 Renvoie un sous-ensemble de la collection à partir de start et n'incluant qu'un nombre limit d'objets.

Paramètres:

  • start Indice de départ à partir de 0 (`int)
  • limit Nombre maximal d'objets (int)

Retour:

  • Collection (object) Nouvelle instance filtrée de la collection

- Twig

{% 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' %}

- PHP

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( filter ): Collection Filtrer la collection par liste de paires property : value.

Paramètres:

  • filter Paires de èproperty : valuequi sont utilisées pour filtrer la collection (array`)

Retour:

  • Collection (object) Nouvelle instance filtrée de la collection
ASTUCE : le filtrage par défaut peut être défini pour le frontend dans les blueprints Flex Type.

- Twig

{% set contacts = grav.get('flex').collection('contacts') %}

{% set contacts = contacts.filterBy({'published': true}) %}

<div>Displaying only published contacts:</div>
{% render contacts layout: 'cards' %}

- PHP

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 Inverse l'ordre des objets dans la Collection.

Retour:

  • Collection (object) Nouvelle instance inversée de la collection
ASTUCE : si vous utilisez sort(), il est recommandé d'inverser l'ordre car cela permet d'économiser une étape supplémentaire.

- Twig

{% set contacts = grav.get('flex').collection('contacts') %}

{% set contacts = contacts.reverse() %}

<div>Displaying contacts in reverse ordering:</div>
{% render contacts layout: 'cards' %}

- PHP

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 Mélange les objets dans un ordre aléatoire.

Retour:

  • Collection (object) Nouvelle instance ordonnée au hasard de la collection.

- Twig

{% set contacts = grav.get('flex').collection('contacts') %}

{% set contacts = contacts.shuffle().limit(0, 6) %}

<div>Displaying 6 random contacts:</div>
{% render contacts layout: 'cards' %}

- PHP

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 Sélectionne des objets (par leurs clés) dans la collection.

Paramètres:

  • keys Liste des clés d'objets utilisées pour sélectionner les objets (array)

Retour:

  • Collection (object) Nouvelle instance de la collection.

- Twig

{% 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' %}

- PHP

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 Supprime les objets (par leurs clés) de la collection.

Paramètres:

  • keys Liste des clés d'objet utilisées pour supprimer les objets (array)

Retour:

  • Collection (object) Nouvelle instance de la collection.

- Twig

{% 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' %}

- PHP

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 Recherche une chaîne dans la collection.

Paramètres:

  • string Chaîne de recherche (string)
  • property Propriétés à rechercher, si null (ou non fournies), utilisez les valeurs par défaut (array ou null)
  • options Options supplémentaires utilisées lors de la recherche (array)
    • commence_par : bool
    • se termine par : bool
    • contient : bool
    • sensible à la casse : bool

Retour:

  • Collection (object) Nouvelle instance filtrée de la collection.

- Twig

{% 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' %}

- PHP

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 Crée une copie de la collection en clonant tous les objets de la collection.

Retour:

  • Collection (object) Nouvelle instance de la collection, maintenant avec des objets clonés.
ATTENTION : Si vous modifiez des objets dans votre collection, vous devez toujours utiliser des copies !

- Twig

{% 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' %}

- PHP

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

}

Itérer dans la collection.

Les Collections peuvent être itérées.

- Twig

{% 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>

- PHP

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 Définit l'itérateur sur le premier objet de la collection et renvoie cet objet.

Retour:

  • Collection (object) Premier objet
  • false Aucun objet dans la collection.

- Twig

{% 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 %}
</ul>

- PHP

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 Définit l'itérateur sur le dernier objet de la collection et renvoie cet objet.

Retour:

  • Collection (object) Dernier objet
  • false Aucun objet dans la collection.

- Twig

{% 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 %}

- PHP

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 Déplace la position de l'itérateur vers l'objet suivant et renvoie cet élément.

Retour:

  • Collection (object) Objet suivant
  • false Plus d'objets dans la collection.

- Twig

{% 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 %}

- PHP

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 Obtient l'objet de la collection à la position actuelle de l'itérateur.

Retour:

  • Collection (object) Objet courant
  • false Plus d'objets dans la collection.

- Twig

{% 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 %}

- PHP

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 Obtient la clé de l'objet à la position actuelle de l'itérateur.

Retour:

  • key (string) Clé d'objet
  • null Plus d'objets dans la collection.

- Twig

{% 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 %}

- PHP

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

    }
}

Obtenir objet/clé.

Accès au tableau.

Les Collections sont accessibles comme des tableaux associatifs ou des cartes.

REMARQUE : null est renvoyé si l'objet avec la clé donnée n'est pas dans la collection.

- Twig

{% 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 %}

- PHP

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( clé ): Object | null Obtient l'objet avec la clé spécifiée.

Paramètres:

  • key Clé d'objet (string)

Retour:

  • Object (object)
  • null L'objet avec la clé donnée n'est pas dans la collection.

Alternative à l'accès aux tableaux.

- Twig

{% 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 %}

- PHP

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...
    }

}

Collection en tant que tableau.

getKeys().

getKeys() : array Récupère toutes les clés de la collection.

Retour:

  • array Liste des clés

- Twig

{% set contacts = grav.get('flex').collection('contacts') %}

{% set keys = contacts.keys() %}

Keys are: {{ keys|join(', ')|e }}

- PHP

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 Alias ​​de la méthode getKeys().

Retour:

  • array Liste des clés

getValues().

getValues() : array Récupère tous les objets de la collection.

Convertit la collection en tableau. Les clés ne sont pas conservées.

Retour:

  • Liste des Objects (array)

- Twig

{% 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>

- PHP

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 Obtient une représentation PHP native de tableau de la collection.

Similaire à getValues() mais préserve les clés.

Retour:

  • array Liste de paires key : Objects.

- Twig

{% 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>

- PHP

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 Extrait une tranche de lenght éléments commençant à la position offset de la Collection.

Paramètres:

  • offset Décalage de départ à partir de 0 (int).
  • lenght Nombre maximal d'objets (int).

Retour:

  • array Liste de paires key : Objects.
CONSEIL : Cette méthode peut être utilisée pour la pagination.

- Twig

{% 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>

- PHP

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 Divise la collection en morceaux d'objets de taille.

Paramètres:

  • size Taille des morceaux (int).

Retour:

  • array Liste bidimensionnelle de paires key : Objects.
CONSEIL : Cette méthode peut être utilisée pour diviser le contenu en lignes et en colonnes.

- Twig

{% 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>

- PHP

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 Regrouper les objets de la collection par une propriété et les renvoyer sous forme de tableau associé.

Paramètres:

  • property Nom de la propriété utilisée pour regrouper les objets (string).

Retour:

  • array Liste bidimensionnelle de paires key : Objects où la valeur de la propriété est la clé du premier niveau

- Twig

{% 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>

- PHP

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...
    }
}

}

Ajout et suppression d'objets.

add().

add( Object ) Ajoute un Object à la fin de la collection.

Paramètres:

  • Objet Objet à ajouter (objet).

remove().

remove (key): Objet | null Supprime l'élément à l'index spécifié de la collection.

Paramètres:

  • key Clé de l'objet à supprimer (object).

Retour:

  • Objet Objet supprimé (object) ou null s'il n'a pas été trouvé

removeElement().

removeElement( Object ): bool Supprime l'objet spécifié de la collection, s'il est trouvé.

Paramètres:

  • Objet Objet à supprimer (object).

Retour:

  • true si l'objet était dans la collection, false sinon.

clear().

clear() Efface la collection, supprimant tous les éléments.

Essais.

containsKey().

containsKey( key ): bool Vérifie si la collection contient un objet avec la clé spécifiée.

Paramètres:

  • key Clé à tester (string)

Retour:

  • true si l'objet est dans la collection, false sinon

contains().

contains( object ): bool Vérifie si un élément est contenu dans la collection.

Paramètres:

  • Objet Objet à tester (object).

Retour:

  • true si l'objet est dans la collection, false sinon

indesOf().

indexOf( objet ): string | false Obtient l'index/la clé d'un objet donné.

Paramètres:

  • Objet Objet à tester (object).

Retour:

  • string index/key de l'objet, false si l'objet n'a pas été trouvé.

isEmpty().

isEmpty() : bool Vérifie si la collection est vide (ne contient aucun objet).

Retour:

  • true si la collection est vide, false sinon.

count().

count') : int

Retour:

  • int Nombre d'objets dans la collection.

Actions groupées pour les objets.

hasProperty().

hasProperty( property ): array Renvoie une liste de paires key:boolean si l'objet avec key a une propriété définie ou non.

Paramètres:

  • property Nom de la propriété (string).

Retour:

  • array de paires de key: bool, où key est la clé de l'objet et bool est soit vrai soit faux.

getProperty().

getProperty( property, default ): array Renvoie une liste de key: value pour chaque objet.

Paramètres:

  • property Nom de la propriété (string).

Retour:

  • array de paires de key: value, où key est la clé de l'objet et value est la valeur de la propriété.

setProperty().

setProperty( property, value ): Collection Définit une nouvelle valeur pour la propriété de chaque objet de la collection.

Paramètres:

  • property Nom de la propriété (string).
  • value Nouvelle valeur (mixed).

Retour:

  • Collection (object) La collection pour enchaîner les appels de méthode.
AVERTISSEMENT : Cette méthode modifie les instances d'objet partagées entre toutes les collections, si ce n'est pas prévu, veuillez copy la collection avant d'utiliser cette méthode.

defProperty().

defProperty( property, default ): Collection Définit la valeur par défaut de la propriété pour chaque objet de la collection.

Paramètres:

  • property Nom de la propriété (string).
  • default Valeur par défaut (mixed).

Retour:

  • Collection (object) La collection pour enchaîner les appels de méthode.
AVERTISSEMENT : Cette méthode modifie les instances d'objet partagées entre toutes les collections, si ce n'est pas prévu, veuillez copy la collection avant d'utiliser cette méthode.

unsetProperty().

unsetProperty( property ): Collection Supprime la valeur de la propriété pour chaque objet de la collection.

Paramètres:

  • property Nom de la propriété (string).

Retour:

  • Collection (object) La collection pour enchaîner les appels de méthode.
AVERTISSEMENT : Cette méthode modifie les instances d'objet partagées entre toutes les collections, si ce n'est pas prévu, veuillez copy la collection avant d'utiliser cette méthode.

call().

call( method, arguments): array Appelle une méthode pour chaque objet de la collection. Renvoie les résultats de chaque appel.

Paramètres:

  • method Nom de la méthode (string).
  • arguments Liste des arguments (array).

Retour:

  • Liste de paires key: result (array)
AVERTISSEMENT : Si la méthode modifie l'objet, veuillez copy la collection avant d'utiliser cette méthode.

getTimestamps().

getTimestamps() : array Renvoie une liste de key : timestamp pour chaque objet.

Retour:

  • Liste de paires key : timestamp où l'horodatage est un entier (array).

getStorageKeys().

getStorageKeys() : array Renvoie une liste de key: storage_key pour chaque objet.

Retour:

  • Liste de paires key : storage_key (array).

getFlexKeys().

getFlexKeys() : array Renvoie une liste de key : flex_key pour chaque objet.

Retour:

  • Liste de paires key : flex_key (array).

withKeyField().

withKeyField( field ): Collection Renvoie une nouvelle collection avec une clé différente.

Paramètres:

  • field Champ clé (string)
    • 'key' : clé par défaut utilisée par le répertoire
    • 'storage_key' : clé de la couche de stockage
    • 'flex_key' : clé unique pouvant être utilisée sans connaître le répertoire

Retour:

  • Collection (object) La collection, mais indexée avec la nouvelle clé.

Tests de fermeture (PHP uniquement).

exist().

exists( Closure ): bool Teste l'existence d'un objet qui satisfait le prédicat donné.

Paramètres:

  • Closure Méthode utilisée pour tester chaque objet.

Retour:

  • bool True si votre fonction de rappel renvoie true pour n'importe quel objet.

forAll().

forAll( Closure ): bool Teste si le prédicat donné est valable pour tous les objets de cette collection.

Paramètres:

  • Closure Méthode utilisée pour tester chaque objet.

Retour:

  • bool True si votre fonction de rappel renvoie true pour n'importe quel objet.

Filtrage de fermeture (PHP uniquement).

filter.

filter( Closure ): Collection Renvoie tous les objets de cette collection qui satisfont le prédicat.

L'ordre des éléments est conservé.

Paramètres:

  • Closure Méthode utilisée pour tester un seul objet.

Retour:

  • Collection (object) Nouvelle collection avec tous les objets pour lesquels votre fonction de rappel renvoie true.

map().

map( Closure ): Collection Applique la fonction donnée à chaque objet de la collection et renvoie une nouvelle collection avec les objets renvoyés par la fonction.

Paramètres:

  • Closure Méthode utilisée pour tester un seul objet.

Retour:

  • Collection (object) Nouvelle collection avec des objets renvoyés par la fonction de rappel.

collectionGroup().

collectionGroup( property ): Collection[] Regrouper les objets de la collection par un champ et les renvoyer sous forme de tableau associé de collections.

Paramètres:

  • property (string) Propriété utilisée pour regrouper les objets.

Retour:

  • array Plusieurs collections dans un tableau, key étant la valeur de la propriété.

matching().

matching( Criteria ): Collection Sélectionne tous les objets qui correspondent à l'expression et renvoie une nouvelle collection contenant ces objets.

Paramètres:

Retour:

  • Collection (object) Nouvelle collection avec des objets correspondant aux critères.
ASTUCE : consultez la documentation de Doctrine pour le générateur d'expressions et les expressions.

orderBy().

orderBy( array ): Collection Réorganise la collection par liste de paires propriété/valeur.

Paramètres:

  • array

Retour:

  • Collection (object) Nouvelle collection avec le nouvel ordre.

partition().

partition( Closure ): array Partitionne cette collection en deux collections selon un prédicat.

Les clés sont conservées dans les collections résultantes.

Paramètres:

  • Closue Méthode utilisée pour partitionner un seul objet. Renvoie vrai ou faux.

Retour:

  • array Objets partitionnés [[a, b], [c, d, e]].