$value) { try { settype($object->{$key}, gettype($this->{$key})); } catch(\Exception | \Error | \Throwable $e) { if(property_exists($this, $key)) { $object->{$key} = $this->{$key}; } else { unset($object->{$key}); } } // if(!property_exists($this, $key)) { // unset($object->{$key}); // } // elseif(is_array($object->{$key}) && gettype($this->{$key} != 'array')){ // $object->{$key} = $this->{$key}; // } // else { // settype($object->{$key}, gettype($this->{$key})); // } } } $this->object = $object; return $this; } public function toObject(): object { return (object)$this->object; } public function toArray(): array { return (array)$this->object; } }