Make StrictList compatible with SplDoublyLinkedList

This commit is contained in:
Sebastian Meyer 2024-01-22 21:03:54 +01:00
parent 1eb426de38
commit f832b58a3e
3 changed files with 7 additions and 10 deletions

View File

@ -279,12 +279,11 @@ class StrictList extends SplDoublyLinkedList
/**
* Create a type-sensitive, traversable list of items.
*
* @param iterable<AllowedType> $items Initial set of items
* @param string[] $allowedTypes Allowed types of items (optional)
*
* @throws InvalidArgumentException
*/
public function __construct(iterable $items = [], array $allowedTypes = [])
public function __construct(array $allowedTypes = [])
{
if (array_sum(array_map('is_string', $allowedTypes)) !== count($allowedTypes)) {
throw new InvalidArgumentException(
@ -292,7 +291,6 @@ class StrictList extends SplDoublyLinkedList
);
}
$this->allowedTypes = $allowedTypes;
$this->append(...$items);
}
/**
@ -330,9 +328,10 @@ class StrictList extends SplDoublyLinkedList
{
/** @var string[] $allowedTypes */
$allowedTypes = $data['StrictList::allowedTypes'];
$this->__construct($allowedTypes);
/** @var iterable<AllowedType> $items */
$items = $data['SplDoublyLinkedList::dllist'];
$this->__construct($items, $allowedTypes);
$this->append(...$items);
/** @var int $flags */
$flags = $data['SplDoublyLinkedList::flags'];
$this->setIteratorMode($flags);

View File

@ -89,12 +89,11 @@ class StrictQueue extends StrictList
/**
* Create a type-sensitive, traversable queue of items.
*
* @param iterable<AllowedType> $items Initial set of items
* @param string[] $allowedTypes Allowed types of items (optional)
*/
public function __construct(iterable $items = [], array $allowedTypes = [])
public function __construct(array $allowedTypes = [])
{
parent::__construct($items, $allowedTypes);
parent::__construct($allowedTypes);
$this->setIteratorMode(0);
}
}

View File

@ -87,12 +87,11 @@ class StrictStack extends StrictList
/**
* Create a type-sensitive, traversable stack of items.
*
* @param iterable<AllowedType> $items Initial set of items
* @param string[] $allowedTypes Allowed types of items (optional)
*/
public function __construct(iterable $items = [], array $allowedTypes = [])
public function __construct(array $allowedTypes = [])
{
parent::__construct($items, $allowedTypes);
parent::__construct($allowedTypes);
$this->setIteratorMode(2);
}
}