diff --git a/lib/Requests/Mail/MailSet.php b/lib/Requests/Mail/MailSet.php index 61df445..23e1de5 100644 --- a/lib/Requests/Mail/MailSet.php +++ b/lib/Requests/Mail/MailSet.php @@ -39,7 +39,7 @@ public function create(string $id, mixed $object = null): MailParameters * @param MailParameters|null $object Email parameters object * @return MailParameters The email parameters for method chaining */ - public function update(string $id, mixed $object = null): MailParameters + public function update(string $id, mixed $object = null): MailParameters|stdClass { return parent::update($id, $object); } diff --git a/lib/Requests/RequestSet.php b/lib/Requests/RequestSet.php index 9c4246b..fd0860f 100644 --- a/lib/Requests/RequestSet.php +++ b/lib/Requests/RequestSet.php @@ -66,13 +66,13 @@ public function create(string $id, mixed $object = null): RequestParametersInter * * @return TParameters The parameters object for method chaining */ - protected function update(string $id, RequestParametersInterface|null $object = null): RequestParametersInterface + protected function update(string $id, RequestParametersInterface|array|null $object = null): RequestParametersInterface|stdClass { // get the class to use (override or default) $class = RequestClasses::getParameter($this->_class . '.object') ?? $this->_parametersClass; // validate object type if provided - if ($object !== null && !($object instanceof $class)) { + if ($object !== null && !($object instanceof $class) && !is_array($object)) { throw new InvalidParameterTypeException($class, $object, 'object'); } @@ -80,10 +80,18 @@ protected function update(string $id, RequestParametersInterface|null $object = if (!isset($this->_command['update'][$id]) && $object === null) { $this->_command['update'][$id] = new \stdClass(); } elseif ($object !== null) { - $object->bind($this->_command['update'][$id]); + if ($object instanceof $class) { + $object->bind($this->_command['update'][$id]); + } elseif (is_array($object)) { + $this->_command['update'][$id] = (object)$object; + } } // return instance of the specific parameters class - $instance = new $class($this->_command['update'][$id]); + if ($object instanceof $class) { + $instance = new $class($this->_command['update'][$id]); + } else { + $instance = $this->_command['update'][$id]; + } return $instance; }