- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
- namespace Zend\Stdlib;
-
- use Serializable;
-
- /**
- * Serializable version of SplPriorityQueue
- *
- * Also, provides predictable heap order for datums added with the same priority
- * (i.e., they will be emitted in the same order they are enqueued).
- */
- class SplPriorityQueue extends \SplPriorityQueue implements Serializable
- {
- /**
- * @var int Seed used to ensure queue order for items of the same priority
- */
- protected $serial = PHP_INT_MAX;
-
- /**
- * Insert a value with a given priority
- *
- * Utilizes {@var $serial} to ensure that values of equal priority are
- * emitted in the same order in which they are inserted.
- *
- * @param mixed $datum
- * @param mixed $priority
- * @return void
- */
- public function insert($datum, $priority)
- {
- if (!is_array($priority)) {
- $priority = array($priority, $this->serial--);
- }
- parent::insert($datum, $priority);
- }
-
-
- /**
- * Serialize to an array
- *
- * Array will be priority => data pairs
- *
- * @return array
- */
- public function toArray()
- {
- $array = array();
- foreach (clone $this as $item) {
- $array[] = $item;
- }
- return $array;
- }
-
-
- /**
- * Serialize
- *
- * @return string
- */
- public function serialize()
- {
- $clone = clone $this;
- $clone->setExtractFlags(self::EXTR_BOTH);
-
- $data = array();
- foreach ($clone as $item) {
- $data[] = $item;
- }
-
- return serialize($data);
- }
-
- /**
- * Deserialize
- *
- * @param string $data
- * @return void
- */
- public function unserialize($data)
- {
- foreach (unserialize($data) as $item) {
- $this->insert($item['data'], $item['priority']);
- }
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
9 years ago
|
|