vendor/pimcore/pimcore/bundles/EcommerceFrameworkBundle/Tracking/AbstractData.php line 118

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Commercial License (PCL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  13.  */
  14. namespace Pimcore\Bundle\EcommerceFrameworkBundle\Tracking;
  15. abstract class AbstractData implements \JsonSerializable
  16. {
  17.     /**
  18.      * @var string
  19.      */
  20.     protected $id;
  21.     /**
  22.      * @var array
  23.      */
  24.     protected $additionalAttributes = [];
  25.     /**
  26.      * @return string
  27.      */
  28.     public function getId()
  29.     {
  30.         return $this->id;
  31.     }
  32.     /**
  33.      * @param string $id
  34.      *
  35.      * @return $this
  36.      */
  37.     public function setId($id)
  38.     {
  39.         $this->id $id;
  40.         return $this;
  41.     }
  42.     /**
  43.      * Merge values into properties
  44.      *
  45.      * @param array $data
  46.      * @param bool $overwrite
  47.      *
  48.      * @return $this
  49.      */
  50.     public function mergeValues(array $data$overwrite false)
  51.     {
  52.         foreach ($data as $key => $value) {
  53.             $getter 'get' ucfirst($key);
  54.             $setter 'set' ucfirst($key);
  55.             if (method_exists($this$getter) && method_exists($this$setter)) {
  56.                 if (null !== $this->$getter() && !$overwrite) {
  57.                     continue;
  58.                 } else {
  59.                     $this->$setter($value);
  60.                 }
  61.             }
  62.         }
  63.         return $this;
  64.     }
  65.     /**
  66.      * Add an additional attribute.
  67.      *
  68.      * @param string $attribute
  69.      * @param mixed $value
  70.      *
  71.      * @return $this
  72.      */
  73.     public function addAdditionalAttribute($attribute$value)
  74.     {
  75.         $this->additionalAttributes[$attribute] = $value;
  76.         return $this;
  77.     }
  78.     /**
  79.      * Get an additional attribute.
  80.      *
  81.      * @param string $attribute
  82.      *
  83.      * @return mixed
  84.      */
  85.     public function getAdditionalAttribute($attribute)
  86.     {
  87.         return $this->additionalAttributes[$attribute];
  88.     }
  89.     /**
  90.      * Get all additional attributes.
  91.      *
  92.      * @return array
  93.      */
  94.     public function getAdditionalAttributes()
  95.     {
  96.         return $this->additionalAttributes;
  97.     }
  98.     /**
  99.      * Serialize all non-null properties
  100.      *
  101.      * @return array
  102.      */
  103.     public function jsonSerialize()
  104.     {
  105.         $json = [];
  106.         $vars get_object_vars($this);
  107.         foreach ($vars as $key => $value) {
  108.             if (null !== $value) {
  109.                 $json[$key] = $value;
  110.             }
  111.         }
  112.         return $json;
  113.     }
  114. }