123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Api;
- /**
- * Base Class for simple data Objects
- * @SuppressWarnings(PHPMD.NumberOfChildren)
- */
- abstract class AbstractSimpleObject
- {
- /**
- * @var array
- */
- protected $_data;
- /**
- * Initialize internal storage
- *
- * @param array $data
- */
- public function __construct(array $data = [])
- {
- $this->_data = $data;
- }
- /**
- * Retrieves a value from the data array if set, or null otherwise.
- *
- * @param string $key
- * @return mixed|null
- */
- protected function _get($key)
- {
- return $this->_data[$key] ?? null;
- }
- /**
- * Set value for the given key
- *
- * @param string $key
- * @param mixed $value
- * @return $this
- */
- public function setData($key, $value)
- {
- $this->_data[$key] = $value;
- return $this;
- }
- /**
- * Return Data Object data in array format.
- *
- * @return array
- */
- public function __toArray()
- {
- $data = $this->_data;
- $hasToArray = function ($model) {
- return is_object($model) && method_exists($model, '__toArray') && is_callable([$model, '__toArray']);
- };
- foreach ($data as $key => $value) {
- if ($hasToArray($value)) {
- $data[$key] = $value->__toArray();
- } elseif (is_array($value)) {
- foreach ($value as $nestedKey => $nestedValue) {
- if ($hasToArray($nestedValue)) {
- $value[$nestedKey] = $nestedValue->__toArray();
- }
- }
- $data[$key] = $value;
- }
- }
- return $data;
- }
- }
|