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