Skip to content

Commit a05fd38

Browse files
committed
Add ReflectionEnum::hasPrimitiveType()
1 parent 1362226 commit a05fd38

File tree

5 files changed

+47
-2
lines changed

5 files changed

+47
-2
lines changed

ext/reflection/php_reflection.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6464,6 +6464,19 @@ ZEND_METHOD(ReflectionAttribute, newInstance)
64646464
RETURN_COPY_VALUE(&obj);
64656465
}
64666466

6467+
ZEND_METHOD(ReflectionEnum, hasPrimitiveType)
6468+
{
6469+
reflection_object *intern;
6470+
zend_class_entry *ce;
6471+
6472+
if (zend_parse_parameters_none() == FAILURE) {
6473+
RETURN_THROWS();
6474+
}
6475+
6476+
GET_REFLECTION_OBJECT_PTR(ce);
6477+
RETURN_BOOL(ce->enum_primitive_type != IS_UNDEF);
6478+
}
6479+
64676480
ZEND_METHOD(ReflectionEnum, getPrimitiveType)
64686481
{
64696482
reflection_object *intern;

ext/reflection/php_reflection.stub.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,9 @@ private function __construct() {}
671671

672672
final class ReflectionEnum extends ReflectionClass
673673
{
674+
/** @return bool */
675+
public function hasPrimitiveType() {}
676+
674677
/** @return ReflectionType|null */
675678
public function getPrimitiveType() {}
676679
}

ext/reflection/php_reflection_arginfo.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: b46df52a50f63581f86d90ed248f13f8e262d95a */
2+
* Stub hash: e17df8167053899d826e74665993b2e0329b18ea */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 0, 1)
55
ZEND_ARG_TYPE_INFO(0, modifiers, IS_LONG, 0)
@@ -491,6 +491,8 @@ ZEND_END_ARG_INFO()
491491

492492
#define arginfo_class_ReflectionAttribute___construct arginfo_class_ReflectionFunctionAbstract_inNamespace
493493

494+
#define arginfo_class_ReflectionEnum_hasPrimitiveType arginfo_class_ReflectionFunctionAbstract_inNamespace
495+
494496
#define arginfo_class_ReflectionEnum_getPrimitiveType arginfo_class_ReflectionFunctionAbstract_inNamespace
495497

496498

@@ -695,6 +697,7 @@ ZEND_METHOD(ReflectionAttribute, getArguments);
695697
ZEND_METHOD(ReflectionAttribute, newInstance);
696698
ZEND_METHOD(ReflectionAttribute, __clone);
697699
ZEND_METHOD(ReflectionAttribute, __construct);
700+
ZEND_METHOD(ReflectionEnum, hasPrimitiveType);
698701
ZEND_METHOD(ReflectionEnum, getPrimitiveType);
699702

700703

@@ -1004,6 +1007,7 @@ static const zend_function_entry class_ReflectionAttribute_methods[] = {
10041007

10051008

10061009
static const zend_function_entry class_ReflectionEnum_methods[] = {
1010+
ZEND_ME(ReflectionEnum, hasPrimitiveType, arginfo_class_ReflectionEnum_hasPrimitiveType, ZEND_ACC_PUBLIC)
10071011
ZEND_ME(ReflectionEnum, getPrimitiveType, arginfo_class_ReflectionEnum_getPrimitiveType, ZEND_ACC_PUBLIC)
10081012
ZEND_FE_END
10091013
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--TEST--
2+
ReflectionEnum::hasPrimitiveType()
3+
--FILE--
4+
<?php
5+
6+
enum Enum_ {}
7+
enum IntEnum: int {}
8+
enum StringEnum: string {}
9+
10+
function test(): string {}
11+
12+
var_dump((new ReflectionEnum(Enum_::class))->hasPrimitiveType());
13+
var_dump((new ReflectionEnum(IntEnum::class))->hasPrimitiveType());
14+
var_dump((new ReflectionEnum(StringEnum::class))->hasPrimitiveType());
15+
16+
?>
17+
--EXPECT--
18+
bool(false)
19+
bool(true)
20+
bool(true)

ext/reflection/tests/ReflectionExtension_getClasses_basic.phpt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ $ext = new ReflectionExtension('reflection');
88
var_dump($ext->getClasses());
99
?>
1010
--EXPECT--
11-
array(19) {
11+
array(20) {
1212
["ReflectionException"]=>
1313
object(ReflectionClass)#2 (1) {
1414
["name"]=>
@@ -104,4 +104,9 @@ array(19) {
104104
["name"]=>
105105
string(19) "ReflectionAttribute"
106106
}
107+
["ReflectionEnum"]=>
108+
object(ReflectionClass)#21 (1) {
109+
["name"]=>
110+
string(14) "ReflectionEnum"
111+
}
107112
}

0 commit comments

Comments
 (0)