Я пытаюсь создать приоритетный класс очереди с объектом массива в PHP. Я знаю, что в PHP есть SplPriorityQueue, но я пытаюсь попрактиковаться в объектно-ориентированном программировании. Очереди приоритетов имеют данные и уровень приоритета, поэтому у меня есть грубый класс MyQueue, который реализует эти атрибуты. Я не уверен, что я иду в правильном направлении здесь. Я не работал с arrayObject в PHP раньше.
public class MyQueue{
private string data;
private int priority;
myQueue = arrayObject(array(data => priority));
}
Класс приоритетной очереди может выглядеть так:
class MyQueue implements Iterator, Countable {
private $data;
public function __construct() {
$this->data = array();
}
function compare($priority1, $priority2) {}
function count() {
return count($this->data);
}
function extract() {
$result = $this->current();
$this->next();
return $result;
}
function current() {
return current($this->data). ' - ' .$this->key();
}
function key() {
return key($this->data);
}
function next() {
return next($this->data);
}
function insert($name, $priority) {
$this->data[$name] = $priority;
asort($this->data);
return $this;
}
function isEmpty() {
return empty($this->data);
}
function recoverFromCorruption() {}
function rewind() {}
function valid() {
return (null === key($this->data)) ? false : true;
}
}
Использование:
$items = new MyQueue();
$items ->insert('Charles', 8)
->insert('James', 1)
->insert('Michael', 4)
->insert('John', 2)
->insert('David', 6)
->insert('William', 5)
->insert('Robert', 3)
->insert('Richard', 7);
foreach($items as $item) {
echo $item,'<br>';
}
Других решений пока нет …