PHP 实现队列类 仅供参考

来源:互联网 发布:中国网络集成公司排名 编辑:程序博客网 时间:2024/06/05 02:23

实际开发中需要用到 PHP 类似队列的功能 于是乎 写了下面的类 写的比较仓卒 有BUG  欢迎Email 我,学习交流仅供参考。

/** * PHP Class for queue * @author yangqijun@live.cn * @copyright DataFrog Beijingbei  Ltd. 2011-07-25 */class Queue {    public  $length=12;    public  $queue  = array();  //  if String like this "22,23,24"    convert to array to do queue    public  $delimiter=',';    function __construct($queue=array())    {        $this->queue=$queue;    }    /**     * @desc start queue     * @param String  $param  new queue element     */    public function run($param)    {        if(!is_array($this->queue)){            $this->strToQue();        }        $currentlength=$this->countqueue();  //Count  the  queue length        echo $this->length;         if($currentlength<$this->length&&$this->length>0) {            $this->queAdd($param);        }else if($this->length==0)        {            $param=empty($param)?0:$param;            $this->queue[]=$param;        }        else {                      for ($i=0;$i<$currentlength-$this->length-1;$i++)            {                $this->queRemove();            }            $this->queAdd($param);        }                    return $this->queue;                }    /**     * String like this "22,23,24"  convert to array to do queue     * @param String $string     * @param String $delimiter     */    public function strToQue (){        if (empty($this->queue))        {            $this->queue=array();        }        else        {            $this->queue=explode($this->delimiter,$this->queue);        }                            }    /**     * insert $node into queue     * @param string $node     */    private function queAdd($node){                    array_push($this->queue,$node);        $this->countqueue();    }    private function queRemove(){        $node = array_shift($this->queue);        $this->countqueue();        return $node;    }    private function countqueue(){        $currentlength= count($this->queue);        return $currentlength;    }    function __destruct()    {        unset($this->queue);    }}//example/*$str='88|89|90';$obj=new Queue ($str);$obj->length=8;  // 队列元素长度 $obj->delimiter='|';  //如果队列是字符串,则元素直接的分隔符为|$a=$obj->run('91');   //要添加到队列中的元素$a=$obj->run('92'); $a=$obj->run('93'); $a=$obj->run('94'); print_r($a);*/?>