diff options
Diffstat (limited to 'library/SSRS/Object/Abstract.php')
-rwxr-xr-x | library/SSRS/Object/Abstract.php | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/library/SSRS/Object/Abstract.php b/library/SSRS/Object/Abstract.php index 40482a0..4658b48 100755 --- a/library/SSRS/Object/Abstract.php +++ b/library/SSRS/Object/Abstract.php @@ -19,12 +19,10 @@ class SSRS_Object_Abstract { } public function setData($data) { - if ($data instanceof stdClass) { - $data = get_object_vars($data); - } + $clean = $this->_sanitizeData($data); - if (is_array($data)) { - foreach ($data AS $key => $value) { + if (is_array($clean)) { + foreach ($clean AS $key => $value) { $this->$key = $value; } } @@ -41,6 +39,20 @@ class SSRS_Object_Abstract { } } + protected function _sanitizeData($data, $recursive = false) { + if (is_object($data)) { + $data = get_object_vars($data); + } + + if ($recursive && is_array($data)) { + foreach ($data AS $key => $value) { + $data[$key] = $this->_sanitizeData($value); + } + } + + return $data; + } + public function __get($key) { return isset($this->data[$key]) ? $this->data[$key] : null; } |