ListInterface.php

Same filename in other branches
  1. 9 core/lib/Drupal/Core/TypedData/ListInterface.php
  2. 8.9.x core/lib/Drupal/Core/TypedData/ListInterface.php
  3. 11.x core/lib/Drupal/Core/TypedData/ListInterface.php

Namespace

Drupal\Core\TypedData

File

core/lib/Drupal/Core/TypedData/ListInterface.php

View source
<?php

namespace Drupal\Core\TypedData;


/**
 * Interface for a list of typed data.
 *
 * A list of typed data contains only items of the same type, is ordered and may
 * contain duplicates. Note that the data type of a list is always 'list'.
 *
 * When implementing this interface which extends Traversable, make sure to list
 * IteratorAggregate or Iterator before this interface in the implements clause.
 *
 * @see \Drupal\Core\TypedData\ListDefinitionInterface
 *
 * @ingroup typed_data
 */
interface ListInterface extends TraversableTypedDataInterface, \ArrayAccess, \Countable {
    
    /**
     * Gets the data definition.
     *
     * @return \Drupal\Core\TypedData\ListDataDefinitionInterface
     *   The data definition object describing the list.
     */
    public function getDataDefinition();
    
    /**
     * Determines whether the list contains any non-empty items.
     *
     * @return bool
     *   TRUE if the list is empty, FALSE otherwise.
     */
    public function isEmpty();
    
    /**
     * Gets the definition of a contained item.
     *
     * @return \Drupal\Core\TypedData\DataDefinitionInterface
     *   The data definition of contained items.
     */
    public function getItemDefinition();
    
    /**
     * Returns the item at the specified position in this list.
     *
     * @param int $index
     *   Index of the item to return.
     *
     * @return \Drupal\Core\TypedData\TypedDataInterface|null
     *   The item at the specified position in this list, or NULL if no item
     *   exists at that position.
     *
     * @throws \Drupal\Core\TypedData\Exception\MissingDataException
     *   If the complex data structure is unset and no item can be created.
     */
    public function get($index);
    
    /**
     * Sets the value of the item at a given position in the list.
     *
     * @param int $index
     *   The position of the item in the list. Since a List only contains
     *   sequential, 0-based indexes, $index has to be:
     *   - Either the position of an existing item in the list. This updates the
     *   item value.
     *   - Or the next available position in the sequence of the current list
     *   indexes. This appends a new item with the provided value at the end of
     *   the list.
     * @param mixed $value
     *   The value of the item to be stored at the specified position.
     *
     * @return $this
     *
     * @throws \InvalidArgumentException
     *   If the $index is invalid (non-numeric, or pointing to an invalid
     *   position in the list).
     * @throws \Drupal\Core\TypedData\Exception\MissingDataException
     *   If the complex data structure is unset and no item can be set.
     */
    public function set($index, $value);
    
    /**
     * Returns the first item in this list.
     *
     * @return \Drupal\Core\TypedData\TypedDataInterface|null
     *   The first item in this list, or NULL if there are no items.
     *
     * @throws \Drupal\Core\TypedData\Exception\MissingDataException
     *   If the complex data structure is unset and no item can be created.
     */
    public function first();
    
    /**
     * Appends a new item to the list.
     *
     * @param mixed $value
     *   The value of the new item.
     *
     * @return \Drupal\Core\TypedData\TypedDataInterface
     *   The item that was appended.
     */
    public function appendItem($value = NULL);
    
    /**
     * Removes the item at the specified position.
     *
     * @param int $index
     *   Index of the item to remove.
     *
     * @return $this
     */
    public function removeItem($index);
    
    /**
     * Filters the items in the list using a custom callback.
     *
     * @param callable $callback
     *   The callback to use for filtering. Like with array_filter(), the
     *   callback is called for each item in the list. Only items for which the
     *   callback returns TRUE are preserved.
     *
     * @return $this
     */
    public function filter($callback);

}

Interfaces

Title Deprecated Summary
ListInterface Interface for a list of typed data.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.