<?php class SplMinHeap2 extends SplMinHeap { public function compare($a, $b) { return -parent::compare($a, $b); } } $h = new SplMinHeap2(); $h->insert(1); $h->insert(6); $h->insert(5); $h->insert(2); var_dump($h->top()); class SplMaxHeap2 extends SplMaxHeap { public function compare($a, $b) { return -parent::compare($a, $b); } } $h = new SplMaxHeap2(); $h->insert(1); $h->insert(6); $h->insert(5); $h->insert(2); var_dump($h->top());
<?php // override heap to force corruption by throwing exception in compare class SplMinHeap2 extends SplMinHeap { public function compare($a, $b) { throw new Exception('Corrupt heap'); } } $h = new SplMinHeap2(); // insert 2 elements to hit our overridden compare $h->insert(4); try { $h->insert(5); } catch (Exception $e) { } // call top, should fail with corrupted heap try { $h->top(); } catch (Exception $e) { echo $e->getMessage(); }