Beispiel #1
0
 public function __call($name, $args)
 {
     //if the method starts with get
     if (strpos($name, 'get') === 0) {
         //getUserName('-')
         $separator = '_';
         if (isset($args[0]) && is_scalar($args[0])) {
             $separator = (string) $args[0];
         }
         $key = preg_replace("/([A-Z0-9])/", $separator . "\$1", $name);
         //get rid of get
         $key = strtolower(substr($key, 3 + strlen($separator)));
         if (isset($this->_data[$key])) {
             return $this->_data[$key];
         }
         return NULL;
     } else {
         if (strpos($name, 'set') === 0) {
             //setUserName('Chris', '-')
             $separator = '_';
             if (isset($args[1]) && is_scalar($args[1])) {
                 $separator = (string) $args[1];
             }
             $key = preg_replace("/([A-Z0-9])/", $separator . "\$1", $name);
             //get rid of set
             $key = strtolower(substr($key, 3 + strlen($separator)));
             $this->__set($key, isset($args[0]) ? $args[0] : NULL);
             return $this;
         }
     }
     try {
         return parent::__call($name, $args);
     } catch (Eden_Error $e) {
         Eden_Type_Error::i($e->getMessage())->trigger();
     }
 }
Beispiel #2
0
if(!class_exists('Eden_Type_Array')){class Eden_Type_Array extends Eden_Type_Abstract implements ArrayAccess,Iterator,Serializable,Countable{protected $_data=array();protected $_original=array();protected static $_methods=array( 'array_change_key_case'=>self::PRE,'array_chunk'=>self::PRE,'array_combine'=>self::PRE,'array_count_datas'=>self::PRE,'array_diff_assoc'=>self::PRE,'array_diff_key'=>self::PRE,'array_diff_uassoc'=>self::PRE,'array_diff_ukey'=>self::PRE,'array_diff'=>self::PRE,'array_fill_keys'=>self::PRE,'array_filter'=>self::PRE,'array_flip'=>self::PRE,'array_intersect_assoc'=>self::PRE,'array_intersect_key'=>self::PRE,'array_intersect_uassoc'=>self::PRE,'array_intersect_ukey'=>self::PRE,'array_intersect'=>self::PRE,'array_keys'=>self::PRE,'array_merge_recursive'=>self::PRE,'array_merge'=>self::PRE,'array_pad'=>self::PRE,'array_reverse'=>self::PRE,'array_shift'=>self::PRE,'array_slice'=>self::PRE,'array_splice'=>self::PRE,'array_sum'=>self::PRE,'array_udiff_assoc'=>self::PRE,'array_udiff_uassoc'=>self::PRE,'array_udiff'=>self::PRE,'array_uintersect_assoc'=>self::PRE,'array_uintersect_uassoc'=>self::PRE,'array_uintersect'=>self::PRE,'array_unique'=>self::PRE,'array_datas'=>self::PRE,'count'=>self::PRE,'current'=>self::PRE,'each'=>self::PRE,'end'=>self::PRE,'extract'=>self::PRE,'key'=>self::PRE,'next'=>self::PRE,'prev'=>self::PRE,'sizeof'=>self::PRE,'array_fill'=>self::POST,'array_map'=>self::POST,'array_search'=>self::POST,'compact'=>self::POST,'implode'=>self::POST,'in_array'=>self::POST,'array_unshift'=>self::REFERENCE,'array_walk_recursive'=>self::REFERENCE,'array_walk'=>self::REFERENCE,'arsort'=>self::REFERENCE,'asort'=>self::REFERENCE,'krsort'=>self::REFERENCE,'ksort'=>self::REFERENCE,'natcasesort'=>self::REFERENCE,'natsort'=>self::REFERENCE,'reset'=>self::REFERENCE,'rsort'=>self::REFERENCE,'shuffle'=>self::REFERENCE,'sort'=>self::REFERENCE,'uasort'=>self::REFERENCE,'uksort'=>self::REFERENCE,'usort'=>self::REFERENCE,'array_push'=>self::REFERENCE);public static function i(){return self::_getMultiple(__CLASS__);}public function __call($name,$args){if(strpos($name,'get')===0){$separator='_';if(isset($args[0]) && is_scalar($args[0])){$separator=(string) $args[0];}$key=preg_replace("/([A-Z0-9])/",$separator."$1",$name);$key=strtolower(substr($key,3+strlen($separator)));if(isset($this->_data[$key])){return $this->_data[$key];}return NULL;}else if (strpos($name,'set')===0){$separator='_';if(isset($args[1]) && is_scalar($args[1])){$separator=(string) $args[1];}$key=preg_replace("/([A-Z0-9])/",$separator."$1",$name);$key=strtolower(substr($key,3+strlen($separator)));$this->__set($key,isset($args[0]) ? $args[0] : NULL);return $this;}try{return parent::__call($name,$args);}catch(Eden_Error $e){Eden_Type_Error::i($e->getMessage())->trigger();}}public function __construct($data=array()){if(func_num_args() > 1 || !is_array($data)){$data=func_get_args();}parent::__construct($data);}public function __set($name,$value){$this->_data[$name]=$value;}public function __toString(){return json_encode($this->get());}public function copy($source,$destination){$this->_data[$destination]=$this->_data[$source];return $this;}public function count(){return count($this->_data);}public function cut($key){Eden_Type_Error::i()->argument(1,'scalar');if(!isset($this->_data[$key])){return $this;}unset($this->_data[$key]);$this->_data=array_values($this->_data);return $this;}public function current(){return current($this->_data);}public function each($callback){Eden_Error::i()->argument(1,'callable');foreach($this->_data as $key=>$value){call_user_func($callback,$key,$value);}return $this;}public function isEmpty(){return empty($this->_data);}public function key(){return key($this->_data);}public function next(){next($this->_data);}public function offsetExists($offset){return isset($this->_data[$offset]);}public function offsetGet($offset){return isset($this->_data[$offset]) ? $this->_data[$offset] : NULL;}public function offsetSet($offset,$value){if (is_null($offset)){$this->_data[]=$value;}else{$this->_data[$offset]=$value;}}public function offsetUnset($offset){unset($this->_data[$offset]);}public function paste($after,$value,$key=NULL){Eden_Type_Error::i()->argument(1,'scalar')->argument(3,'scalar','null');$list=array();foreach($this->_data as $i=>$val){$list[$i]=$val;if($after !=$i){continue;}if(!is_null($key)){$list[$key]=$value;continue;}$list[]=$arrayValue;}if(is_null($key)){$list=array_values($list);}$this->_data=$list;return $this;}public function rewind(){reset($this->_data);}public function serialize(){return json_encode($this->_data);}public function set($value){Eden_Type_Error::i()->argument(1,'array');$this->_data=$value;return $this;}public function unserialize($data){$this->_data=json_decode($data,true);return $this;}public function valid(){return isset($this->_data[$this->key()]);}protected function _getMethodType(&$name){if(isset(self::$_methods[$name])){return self::$_methods[$name];}if(isset(self::$_methods['array_'.$name])){$name='array_'.$name;return self::$_methods[$name];}$uncamel=strtolower(preg_replace("/([A-Z])/","_$1",$name));if(isset(self::$_methods[$uncamel])){$name=$uncamel;return self::$_methods[$name];}if(isset(self::$_methods['array_'.$uncamel])){$name='array_'.$uncamel;return self::$_methods[$name];}return false;}}}