最典型的用法是在堆疊、佇列或集合中,例如在您將任務排入佇列、建立呼叫堆疊或操作 JSON、XML 等元素時。
與 RuntimeException 類別的其他例外一樣,這種類型的錯誤無法在(例如)您的 IDE 或編譯器中偵測到。
<?php
$f1 = function() { setTypeControl('username');};
$f2 = function() { setTypeControl('userpass');};
$f3 = function() { setButton('Add');};
$f4 = function() { setButton('OK');};
$tasks = new class {
private $list;
public function __construct() {
$this->list = new SplQueue;
}
public function add(callable $func) {
$this->list->enqueue($func);
}
public function do() {
if ($this->list->isEmpty()) {
throw new UnderflowException;
} else {
call_user_func($this->list->dequeue());
}
}
};
$tasks->add($f1);
$tasks->add($f2);
$tasks->add($f3);
$tasks->add($f4);
$tasks->do(); $tasks->do(); $tasks->do(); $tasks->do(); $tasks->do();