我的一个类方法返回不正确的值

时间:2014-07-25 21:29:20

标签: php wordpress

我正在为wordpress编写一个插件,我有一个类文件,如下所示:

class pgboxdata{
    protected $boxesdata;

    public function pgboxdata(){
        if(get_option('fixed_boxes_data')){
            $this->boxesdata = maybe_unserialize(get_option('fixed_boxes_data'));
        }
        else {
            $this->addbox('PG Fixed Box','500','300','pg-btn-tl','#fff','everywhere');
        }

    }

    public function addbox($title,$width,$height,$place,$backcolor,$page){
            $data = $this->boxesdata;
            $uniqueid;
            $uniqueid = $this->generate_id(); 
            $data []= array(
                        'theid' => $uniqueid,
                        'title' => $title,
                        'width' => $width,
                        'height' => $height,
                        'backcolor' => $backcolor,  
                        'btnpos' => $place,
                        'page' => $page
                        );
            $this->updateit($data);
    }

    function generate_id(){
        if(is_array($this->boxesdata)){
            $count = count($this->boxesdata);
            if($count > 0){
                $releasedid = "fixedboxarea".$count+1;
                return $releasedid;
            }
            else {
                $releasedid = "fixedboxarea".$count;
                return $releasedid;
            }
        }
        else
            return 0;
    }




    function updateit($data){
        if(is_array($data)){
            $this->boxesdata = $data;
            update_option('fixed_boxes_data' , maybe_serialize($data));
            return true;
        }
    }



}

在我的插件中,我创建了这个类的新对象,我打电话给addbox,如下所示:

$datasender = new pgboxdata();              
$datasender->addbox($_POST['box_name'],$_POST['box_width'],$_POST['box_height'],$_POST['btnplace'],$_POST['bgcolor'],$_POST['selectedplace']);

但问题是第一次方法generate_id返回正确的值(返回:fixedboxarea0)但是从第二次开始它总是返回1! 谁能告诉我为什么会这样? 使用函数generate_id的原因是我希望每个具有指定前缀的框都有唯一的id,但即使我不知道这种方法是否正确。

1 个答案:

答案 0 :(得分:1)

那是因为您正在递增$count var以及字符串连接。正确的表达方式是:

$releasedid = "fixedboxarea" . ($count + 1);