This repository has been archived on 2026-04-06. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
PayPal-PHP-SDK/lib/PayPal/Common/Model.php
2013-03-06 18:42:06 +05:30

88 lines
1.8 KiB
PHP

<?php
namespace PayPal\Common;
use PayPal\Api\Payer;
/**
* Generic Model class that all API domain classes extend
* Stores all member data in a hashmap that enables easy
* JSON encoding/decoding
*/
class Model {
private $_propMap = array();
public function __get($key) {
return $this->_propMap[$key];
}
public function __set($key, $value) {
$this->_propMap[$key] = $value;
}
public function __isset($key) {
return isset($this->_propMap[$key]);
}
public function __unset($key) {
unset($this->_propMap[$key]);
}
private function _convertToArray($param) {
$ret = array();
foreach($param as $k => $v) {
if($v instanceof Model ) {
$ret[$k] = $v->toArray();
} else if (is_array($v)) {
$ret[$k] = $this->_convertToArray($v);
} else {
$ret[$k] = $v;
}
}
return $ret;
}
public function fromArray($arr) {
foreach($arr as $k => $v) {
if(is_array($v)) {
$clazz = ReflectionUtil::getPropertyClass(get_class($this), $k);
if(ArrayUtil::isAssocArray($v)) {
$o = new $clazz();
$o->fromArray($v);
$setterFunc = "set".ucfirst($k);
$this->$setterFunc($o);
} else {
$setterFunc = "set".ucfirst($k);
$arr = array();
foreach($v as $nk => $nv) {
if(is_array($nv)) {
$o = new $clazz();
$o->fromArray($nv);
$arr[$nk] = $o;
} else {
$arr[$nk] = $nv;
}
}
$this->$setterFunc($arr); //TODO: Cleaning up any current values in this case. Should be doing this allways
}
}else {
$this->$k = $v;
}
}
}
public function fromJson($json) {
$this->fromArray(json_decode($json, true));
}
public function toArray() {
return $this->_convertToArray($this->_propMap);
}
public function toJSON() {
return json_encode($this->toArray());
}
}