Skip to content

Commit 07e739a

Browse files
committed
Remove most uses of _default_get_name()
Instead fetch the name from the respective structure. The only place where this is still used is ReflectionClassConst, as zend_class_const does not store the name.
1 parent ab73d14 commit 07e739a

File tree

2 files changed

+53
-33
lines changed

2 files changed

+53
-33
lines changed

ext/reflection/php_reflection.c

Lines changed: 48 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,11 @@ static int format_default_value(smart_str *str, zval *value, zend_class_entry *s
610610
return SUCCESS;
611611
}
612612

613+
static inline zend_bool has_internal_arg_info(const zend_function *fptr) {
614+
return fptr->type == ZEND_INTERNAL_FUNCTION
615+
&& !(fptr->common.fn_flags & ZEND_ACC_USER_ARG_INFO);
616+
}
617+
613618
/* {{{ _parameter_string */
614619
static void _parameter_string(smart_str *str, zend_function *fptr, struct _zend_arg_info *arg_info, uint32_t offset, zend_bool required, char* indent)
615620
{
@@ -631,11 +636,8 @@ static void _parameter_string(smart_str *str, zend_function *fptr, struct _zend_
631636
if (ZEND_ARG_IS_VARIADIC(arg_info)) {
632637
smart_str_appends(str, "...");
633638
}
634-
smart_str_append_printf(str, "$%s",
635-
(fptr->type == ZEND_INTERNAL_FUNCTION &&
636-
!(fptr->common.fn_flags & ZEND_ACC_USER_ARG_INFO)) ?
637-
((zend_internal_arg_info*)arg_info)->name :
638-
ZSTR_VAL(arg_info->name));
639+
smart_str_append_printf(str, "$%s", has_internal_arg_info(fptr)
640+
? ((zend_internal_arg_info*)arg_info)->name : ZSTR_VAL(arg_info->name));
639641

640642
if (fptr->type == ZEND_USER_FUNCTION && !required) {
641643
zend_op *precv = _get_recv_op((zend_op_array*)fptr, offset);
@@ -1139,15 +1141,10 @@ static void reflection_parameter_factory(zend_function *fptr, zval *closure_obje
11391141
}
11401142

11411143
prop_name = reflection_prop_name(object);
1142-
if (arg_info->name) {
1143-
if (fptr->type == ZEND_INTERNAL_FUNCTION &&
1144-
!(fptr->common.fn_flags & ZEND_ACC_USER_ARG_INFO)) {
1145-
ZVAL_STRING(prop_name, ((zend_internal_arg_info*)arg_info)->name);
1146-
} else {
1147-
ZVAL_STR_COPY(prop_name, arg_info->name);
1148-
}
1144+
if (has_internal_arg_info(fptr)) {
1145+
ZVAL_STRING(prop_name, ((zend_internal_arg_info*)arg_info)->name);
11491146
} else {
1150-
ZVAL_NULL(prop_name);
1147+
ZVAL_STR_COPY(prop_name, arg_info->name);
11511148
}
11521149
}
11531150
/* }}} */
@@ -1443,10 +1440,15 @@ ZEND_METHOD(reflection_function, __toString)
14431440
Returns this function's name */
14441441
ZEND_METHOD(reflection_function, getName)
14451442
{
1443+
reflection_object *intern;
1444+
zend_function *fptr;
1445+
14461446
if (zend_parse_parameters_none() == FAILURE) {
14471447
RETURN_THROWS();
14481448
}
1449-
_default_get_name(ZEND_THIS, return_value);
1449+
1450+
GET_REFLECTION_OBJECT_PTR(fptr);
1451+
RETURN_STR_COPY(fptr->common.function_name);
14501452
}
14511453
/* }}} */
14521454

@@ -2254,8 +2256,7 @@ ZEND_METHOD(reflection_parameter, __construct)
22542256
goto failure;
22552257
}
22562258

2257-
if (fptr->type == ZEND_INTERNAL_FUNCTION &&
2258-
!(fptr->common.fn_flags & ZEND_ACC_USER_ARG_INFO)) {
2259+
if (has_internal_arg_info(fptr)) {
22592260
for (i = 0; i < num_args; i++) {
22602261
if (arg_info[i].name) {
22612262
if (strcmp(((zend_internal_arg_info*)arg_info)[i].name, Z_STRVAL_P(parameter)) == 0) {
@@ -2295,15 +2296,10 @@ ZEND_METHOD(reflection_parameter, __construct)
22952296
}
22962297

22972298
prop_name = reflection_prop_name(object);
2298-
if (arg_info[position].name) {
2299-
if (fptr->type == ZEND_INTERNAL_FUNCTION &&
2300-
!(fptr->common.fn_flags & ZEND_ACC_USER_ARG_INFO)) {
2301-
ZVAL_STRING(prop_name, ((zend_internal_arg_info*)arg_info)[position].name);
2302-
} else {
2303-
ZVAL_STR_COPY(prop_name, arg_info[position].name);
2304-
}
2299+
if (has_internal_arg_info(fptr)) {
2300+
ZVAL_STRING(prop_name, ((zend_internal_arg_info*)arg_info)[position].name);
23052301
} else {
2306-
ZVAL_NULL(prop_name);
2302+
ZVAL_STR_COPY(prop_name, arg_info[position].name);
23072303
}
23082304
return;
23092305

@@ -2340,10 +2336,19 @@ ZEND_METHOD(reflection_parameter, __toString)
23402336
Returns this parameters's name */
23412337
ZEND_METHOD(reflection_parameter, getName)
23422338
{
2339+
reflection_object *intern;
2340+
parameter_reference *param;
2341+
23432342
if (zend_parse_parameters_none() == FAILURE) {
23442343
RETURN_THROWS();
23452344
}
2346-
_default_get_name(ZEND_THIS, return_value);
2345+
2346+
GET_REFLECTION_OBJECT_PTR(param);
2347+
if (has_internal_arg_info(param->fptr)) {
2348+
RETURN_STRING(((zend_internal_arg_info *) param->arg_info)->name);
2349+
} else {
2350+
RETURN_STR_COPY(param->arg_info->name);
2351+
}
23472352
}
23482353
/* }}} */
23492354

@@ -3862,10 +3867,15 @@ ZEND_METHOD(reflection_class, __toString)
38623867
Returns the class' name */
38633868
ZEND_METHOD(reflection_class, getName)
38643869
{
3870+
reflection_object *intern;
3871+
zend_class_entry *ce;
3872+
38653873
if (zend_parse_parameters_none() == FAILURE) {
38663874
RETURN_THROWS();
38673875
}
3868-
_default_get_name(ZEND_THIS, return_value);
3876+
3877+
GET_REFLECTION_OBJECT_PTR(ce);
3878+
RETURN_STR_COPY(ce->name);
38693879
}
38703880
/* }}} */
38713881

@@ -5217,10 +5227,15 @@ ZEND_METHOD(reflection_property, __toString)
52175227
Returns the class' name */
52185228
ZEND_METHOD(reflection_property, getName)
52195229
{
5230+
reflection_object *intern;
5231+
property_reference *ref;
5232+
52205233
if (zend_parse_parameters_none() == FAILURE) {
52215234
RETURN_THROWS();
52225235
}
5223-
_default_get_name(ZEND_THIS, return_value);
5236+
5237+
GET_REFLECTION_OBJECT_PTR(ref);
5238+
RETURN_STR_COPY(ref->unmangled_name);
52245239
}
52255240
/* }}} */
52265241

@@ -5657,10 +5672,15 @@ ZEND_METHOD(reflection_extension, __toString)
56575672
Returns this extension's name */
56585673
ZEND_METHOD(reflection_extension, getName)
56595674
{
5675+
reflection_object *intern;
5676+
zend_module_entry *module;
5677+
56605678
if (zend_parse_parameters_none() == FAILURE) {
56615679
RETURN_THROWS();
56625680
}
5663-
_default_get_name(ZEND_THIS, return_value);
5681+
5682+
GET_REFLECTION_OBJECT_PTR(module);
5683+
RETURN_STRING(module->name);
56645684
}
56655685
/* }}} */
56665686

ext/reflection/php_reflection.stub.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public function getExtensionName() {}
6060
/** @return string|false */
6161
public function getFileName() {}
6262

63-
/** @return string|false */
63+
/** @return string */
6464
public function getName() {}
6565

6666
/** @return string */
@@ -199,7 +199,7 @@ public function __construct($argument) {}
199199

200200
public function __toString(): string {}
201201

202-
/** @return string|false */
202+
/** @return string */
203203
public function getName() {}
204204

205205
/** @return bool */
@@ -370,7 +370,7 @@ public function __construct($class, string $name) {}
370370

371371
public function __toString(): string {}
372372

373-
/** @return string|false */
373+
/** @return string */
374374
public function getName() {}
375375

376376
/** @return mixed */
@@ -467,7 +467,7 @@ public function __construct($function, $parameter) {}
467467

468468
public function __toString(): string {}
469469

470-
/** @return string|false */
470+
/** @return string */
471471
public function getName() {}
472472

473473
/** @return bool */
@@ -554,7 +554,7 @@ public function __construct(string $name) {}
554554

555555
public function __toString(): string {}
556556

557-
/** @return string|false */
557+
/** @return string */
558558
public function getName() {}
559559

560560
/** @return ?string */

0 commit comments

Comments
 (0)