PHP的Collection集合類

phpw34 9年前發布 | 4K 次閱讀 PHP

 
<?php
header("Content-type:text/html; charset=utf-8");

class Collection{ private $_members=array(); private $_onload; private $_isLoaded=false;

public function startLoad(){
    $this->_checkCallback();
}

public function addItem($obj,$key=NULL){
    $this->_checkCallback();
    if($key){
        if(isset($this->_members[$key])){
            throw new Exception("Key \\"$key\\" already in use!");
        }else{
            $this->_members[$key]=$obj;
        }
    }else{
        $this->_members[]=$obj;
    }
}

public function removeItem($key){
    $this->_checkCallback();
    if(isset($this->_members[$key])){
        unset($this->_members[$key]);
    }else{
        throw new Exception("Invalid key \\"$key\\"!");
    }
}

public function getItem($key){
    $this->_checkCallback();
    if(isset($this->_members[$key])){
        return $this->_members[$key];
    }else{
        throw new Exception("Invalid key \\"$key\\"!");
    }
}

public function keys(){
    $this->_checkCallback();
    return array_keys($this->_members);
}

public function length(){
    $this->_checkCallback();
    return sizeof($this->_members);
}

public function exists($key){
    $this->_checkCallback();
    return (isset($this->_members[$key]));
}

public function setLoadCallback($functionName,$objOrClass=NULL){
    if($objOrClass){
        $callback=array($objOrClass,$functionName);
    }else{
        $callback=$functionName;
    }

    if(!is_callable($callback)){
        /*throw new Exception("$callableName is not callable"."as a parameter to oonload");*/
        echo "$callback is not callable<br>";
        return false;
    }

    $this->_onload=$callback;
}

private function _checkCallback(){
    if(isset($this->_onload)&&!$this->_isLoaded){
        $this->_isLoaded=true;
        call_user_func($this->_onload,$this);
    }
}

}

</pre>

 本文由用戶 phpw34 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!