Skip to content

Commit a4c4267

Browse files
committed
added Type::getType()
1 parent dbd32bd commit a4c4267

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/PhpGenerator/Type.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,24 @@ public static function union(string ...$types): string
4040
{
4141
return implode('|', $types);
4242
}
43+
44+
45+
public static function getType($value): ?string
46+
{
47+
if (is_object($value)) {
48+
return get_class($value);
49+
} elseif (is_int($value)) {
50+
return self::INT;
51+
} elseif (is_float($value)) {
52+
return self::FLOAT;
53+
} elseif (is_string($value)) {
54+
return self::STRING;
55+
} elseif (is_bool($value)) {
56+
return self::BOOL;
57+
} elseif (is_array($value)) {
58+
return self::ARRAY;
59+
} else {
60+
return null;
61+
}
62+
}
4363
}

tests/PhpGenerator/Type.phpt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,10 @@ Assert::same('A', Type::nullable(A::class, false));
1616

1717
Assert::same('?A', Type::nullable('?A', true));
1818
Assert::same('A', Type::nullable('?A', false));
19+
20+
Assert::same(stdClass::class, Type::getType(new stdClass));
21+
Assert::same(Type::STRING, Type::getType(''));
22+
Assert::same(Type::INT, Type::getType(1));
23+
Assert::same(Type::FLOAT, Type::getType(1.0));
24+
Assert::same(Type::ARRAY, Type::getType([]));
25+
Assert::same(null, Type::getType(fopen(__FILE__, 'r')));

0 commit comments

Comments
 (0)