diff --git a/src/Generator/ValueGenerator.php b/src/Generator/ValueGenerator.php index d0c6b69f..41243461 100644 --- a/src/Generator/ValueGenerator.php +++ b/src/Generator/ValueGenerator.php @@ -437,9 +437,10 @@ public function generate() break; case self::TYPE_OTHER: default: - throw new Exception\RuntimeException( - sprintf('Type "%s" is unknown or cannot be used as property default value.', get_class($value)) - ); + throw new Exception\RuntimeException(sprintf( + 'Type "%s" is unknown or cannot be used as property default value.', + is_object($value) ? get_class($value) : gettype($value) + )); } return $output; diff --git a/test/Generator/ValueGeneratorTest.php b/test/Generator/ValueGeneratorTest.php index 13551b1f..c33d521d 100644 --- a/test/Generator/ValueGeneratorTest.php +++ b/test/Generator/ValueGeneratorTest.php @@ -11,8 +11,11 @@ use ArrayAccess; use ArrayObject as SplArrayObject; +use DateTime; +use Generator; use PHPUnit\Framework\TestCase; use Zend\Code\Exception\InvalidArgumentException; +use Zend\Code\Exception\RuntimeException; use Zend\Code\Generator\PropertyGenerator; use Zend\Code\Generator\PropertyValueGenerator; use Zend\Code\Generator\ValueGenerator; @@ -462,4 +465,24 @@ public function getEscapedParameters() ["\\'", "\\\\\\'"], ]; } + + public function invalidValue() : Generator + { + yield 'object' => [new DateTime(), DateTime::class]; + yield 'resource' => [fopen('php://input', 'r'), 'resource']; + } + + /** + * @dataProvider invalidValue + * + * @param mixed $value + */ + public function testExceptionInvalidValue($value, string $type) : void + { + $valueGenerator = new ValueGenerator($value); + + $this->expectException(RuntimeException::class); + $this->expectExceptionMessage('Type "'.$type.'" is unknown or cannot be used'); + $valueGenerator->generate(); + } }