<?php
interface ProcessInterface
{
}
interface RewindIterator extends Iterator
{
public function previous(): ProcessInterface;
}
interface ProcessListInterface extends RewindIterator
{
public function append(ProcessInterface $process): void;
public function clear(): void;
public function isEmpty(): bool;
}
final class ProcessList implements ProcessListInterface
{
private $processes = [];
public function __construct(array $processes = [])
{
foreach ($processes as $process) {
$this->append($process);
}
}
public function append(ProcessInterface $process): void
{
$this->processes[] = $process;
}
public function clear(): void
{
$this->processes = [];
}
public function isEmpty(): bool
{
return empty($this->processes);
}
public function rewind(): ProcessInterface
{
return reset($this->processes);
}
public function current(): ProcessInterface
{
return current($this->processes);
}
public function key(): int
{
return key($this->processes);
}
public function next(): ProcessInterface
{
return next($this->processes);
}
public function previous(): ProcessInterface
{
return prev($this->processes);
}
public function valid(): bool
{
return key($this->processes) !== null;
}
}
Deprecated: Return type of ProcessList::next(): ProcessInterface should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/56bKR on line 60
Deprecated: Return type of ProcessList::rewind(): ProcessInterface should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/56bKR on line 45
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Deprecated: Return type of ProcessList::next(): ProcessInterface should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/56bKR on line 60
Deprecated: Return type of ProcessList::rewind(): ProcessInterface should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/56bKR on line 45