diff --git a/src/Collection.php b/src/Collection.php index 3fdc871..59db0fe 100644 --- a/src/Collection.php +++ b/src/Collection.php @@ -118,25 +118,27 @@ public function offsetSet($index, $value) * value if it is. * * @param mixed $value - * @param string|null $type + * @param string|null $expectedType * @return mixed * @throws TypeError */ - private function checkType($value, ?string $type) + private function checkType($value, ?string $expectedType) { - if ($type) { - if (is_object($value) && !$value instanceof $type) { - throw new TypeError(sprintf( - "Invalid object type. Should be %s: %s collected", - $type, - get_class($value) - )); - } - if (!is_object($value) && gettype($value) !== $type) { + if ($expectedType) { + $valueType = \gettype($value); + if ($valueType === 'object') { + if (!$value instanceof $expectedType) { + throw new TypeError(sprintf( + "Invalid object type. Should be %s: %s collected", + $expectedType, + get_class($value) + )); + } + } elseif ($valueType !== $expectedType) { throw new TypeError(sprintf( "Invalid type. Should be %s: %s collected", - $type, - gettype($value) + $expectedType, + $valueType )); } }