Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Queue.php

class Queue

This class provides a basic implementation of `QueueInterface`, to minimize the effort required to implement this interface.

@template T @extends AbstractArray<T> @implements QueueInterface<T>

Hierarchy

  • class \Ramsey\Collection\AbstractArray implements \Ramsey\Collection\ArrayInterface
    • class \Ramsey\Collection\Queue extends \Ramsey\Collection\AbstractArray implements \Ramsey\Collection\QueueInterface uses \Ramsey\Collection\Tool\TypeTrait, \Ramsey\Collection\Tool\ValueToStringTrait

Expanded class hierarchy of Queue

1 string reference to 'Queue'
SystemHooks::cron in core/modules/system/src/Hook/SystemHooks.php
Implements hook_cron().

File

vendor/ramsey/collection/src/Queue.php, line 32

Namespace

Ramsey\Collection
View source
class Queue extends AbstractArray implements QueueInterface {
    use TypeTrait;
    use ValueToStringTrait;
    
    /**
     * Constructs a queue object of the specified type, optionally with the
     * specified data.
     *
     * @param string $queueType The type or class name associated with this queue.
     * @param array<array-key, T> $data The initial items to store in the queue.
     */
    public function __construct(string $queueType, array $data = []) {
        parent::__construct($data);
    }
    
    /**
     * {@inheritDoc}
     *
     * Since arbitrary offsets may not be manipulated in a queue, this method
     * serves only to fulfill the `ArrayAccess` interface requirements. It is
     * invoked by other operations when adding values to the queue.
     *
     * @throws InvalidArgumentException if $value is of the wrong type.
     */
    public function offsetSet(mixed $offset, mixed $value) : void {
        if ($this->checkType($this->getType(), $value) === false) {
            throw new InvalidArgumentException('Value must be of type ' . $this->getType() . '; value is ' . $this->toolValueToString($value));
        }
        $this->data[] = $value;
    }
    
    /**
     * @throws InvalidArgumentException if $value is of the wrong type.
     */
    public function add(mixed $element) : bool {
        $this[] = $element;
        return true;
    }
    
    /**
     * @return T
     *
     * @throws NoSuchElementException if this queue is empty.
     */
    public function element() : mixed {
        return $this->peek() ?? throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
    }
    public function offer(mixed $element) : bool {
        try {
            return $this->add($element);
        } catch (InvalidArgumentException) {
            return false;
        }
    }
    
    /**
     * @return T | null
     */
    public function peek() : mixed {
        $index = array_key_first($this->data);
        if ($index === null) {
            return null;
        }
        return $this[$index];
    }
    
    /**
     * @return T | null
     */
    public function poll() : mixed {
        $index = array_key_first($this->data);
        if ($index === null) {
            return null;
        }
        $head = $this[$index];
        unset($this[$index]);
        return $head;
    }
    
    /**
     * @return T
     *
     * @throws NoSuchElementException if this queue is empty.
     */
    public function remove() : mixed {
        return $this->poll() ?? throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
    }
    public function getType() : string {
        return $this->queueType;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
AbstractArray::$data protected property The items of this array.
AbstractArray::clear public function Removes all items from this array. Overrides ArrayInterface::clear
AbstractArray::count public function Returns the number of items in this array.
AbstractArray::getIterator public function Returns an iterator for this array. 2
AbstractArray::isEmpty public function Returns `true` if this array is empty. Overrides ArrayInterface::isEmpty
AbstractArray::offsetExists public function Returns `true` if the given offset exists in this array.
AbstractArray::offsetGet public function Returns the value at the specified offset.
AbstractArray::offsetUnset public function Removes the given offset and its value from the array.
AbstractArray::toArray public function @inheritDoc Overrides ArrayInterface::toArray 1
AbstractArray::__serialize public function Returns data suitable for PHP serialization. 1
AbstractArray::__unserialize public function Adds unserialized data to the object.
Queue::add public function Overrides QueueInterface::add
Queue::element public function Overrides QueueInterface::element
Queue::getType public function Returns the type associated with this queue. Overrides QueueInterface::getType
Queue::offer public function Inserts the specified element into this queue if it is possible to do so
immediately without violating capacity restrictions.
Overrides QueueInterface::offer
Queue::offsetSet public function Since arbitrary offsets may not be manipulated in a queue, this method
serves only to fulfill the `ArrayAccess` interface requirements. It is
invoked by other operations when adding values to the queue.
Overrides AbstractArray::offsetSet
Queue::peek public function Overrides QueueInterface::peek
Queue::poll public function Overrides QueueInterface::poll
Queue::remove public function Overrides QueueInterface::remove
Queue::__construct public function Constructs a queue object of the specified type, optionally with the
specified data.
Overrides AbstractArray::__construct 1
TypeTrait::checkType protected function Returns `true` if value is of the specified type.
ValueToStringTrait::toolValueToString protected function Returns a string representation of the value.
RSS feed
Powered by Drupal