. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\MassAction; use Espo\Core\Utils\ObjectUtil; use stdClass; class Data { private stdClass $data; private function __construct() { $this->data = (object) []; } public function getRaw(): stdClass { return ObjectUtil::clone($this->data); } /** * Get an item value. * * @return mixed */ public function get(string $name) { return $this->getRaw()->$name ?? null; } /** * Has an item. */ public function has(string $name): bool { return property_exists($this->data, $name); } public static function fromRaw(stdClass $data): self { $obj = new self(); $obj->data = $data; return $obj; } /** * Clone with an item value. * * @param mixed $value */ public function with(string $name, $value): self { $obj = clone $this; $obj->data->$name = $value; return $obj; } public function __clone() { $this->data = ObjectUtil::clone($this->data); } }