@@ -170,24 +170,13 @@ static inline zend_bool is_closure_invoke(zend_class_entry *ce, zend_string *lcn
170
170
&& zend_string_equals_literal (lcname , ZEND_INVOKE_FUNC_NAME );
171
171
}
172
172
173
- static zval * _default_load_name (zval * object ) /* {{{ */
173
+ static void _default_get_name (zval * object , zval * return_value ) /* {{{ */
174
174
{
175
175
zval * name = reflection_prop_name (object );
176
176
if (Z_ISUNDEF_P (name )) {
177
- return NULL ;
178
- }
179
- return name ;
180
- }
181
- /* }}} */
182
-
183
- static void _default_get_name (zval * object , zval * return_value ) /* {{{ */
184
- {
185
- zval * value ;
186
-
187
- if ((value = _default_load_name (object )) == NULL ) {
188
177
RETURN_FALSE ;
189
178
}
190
- ZVAL_COPY (return_value , value );
179
+ ZVAL_COPY (return_value , name );
191
180
}
192
181
/* }}} */
193
182
@@ -3243,43 +3232,38 @@ ZEND_METHOD(reflection_function, isVariadic)
3243
3232
Returns whether this function is defined in namespace */
3244
3233
ZEND_METHOD (reflection_function , inNamespace )
3245
3234
{
3246
- zval * name ;
3247
- const char * backslash ;
3235
+ reflection_object * intern ;
3236
+ zend_function * fptr ;
3248
3237
3249
3238
if (zend_parse_parameters_none () == FAILURE ) {
3250
3239
RETURN_THROWS ();
3251
3240
}
3252
- if ((name = _default_load_name (ZEND_THIS )) == NULL ) {
3253
- RETURN_FALSE ;
3254
- }
3255
- if (Z_TYPE_P (name ) == IS_STRING
3256
- && (backslash = zend_memrchr (Z_STRVAL_P (name ), '\\' , Z_STRLEN_P (name )))
3257
- && backslash > Z_STRVAL_P (name ))
3258
- {
3259
- RETURN_TRUE ;
3260
- }
3261
- RETURN_FALSE ;
3241
+
3242
+ GET_REFLECTION_OBJECT_PTR (fptr );
3243
+
3244
+ zend_string * name = fptr -> common .function_name ;
3245
+ const char * backslash = zend_memrchr (ZSTR_VAL (name ), '\\' , ZSTR_LEN (name ));
3246
+ RETURN_BOOL (backslash && backslash > ZSTR_VAL (name ));
3262
3247
}
3263
3248
/* }}} */
3264
3249
3265
3250
/* {{{ proto public string ReflectionFunction::getNamespaceName()
3266
3251
Returns the name of namespace where this function is defined */
3267
3252
ZEND_METHOD (reflection_function , getNamespaceName )
3268
3253
{
3269
- zval * name ;
3270
- const char * backslash ;
3254
+ reflection_object * intern ;
3255
+ zend_function * fptr ;
3271
3256
3272
3257
if (zend_parse_parameters_none () == FAILURE ) {
3273
3258
RETURN_THROWS ();
3274
3259
}
3275
- if ((name = _default_load_name (ZEND_THIS )) == NULL ) {
3276
- RETURN_FALSE ;
3277
- }
3278
- if (Z_TYPE_P (name ) == IS_STRING
3279
- && (backslash = zend_memrchr (Z_STRVAL_P (name ), '\\' , Z_STRLEN_P (name )))
3280
- && backslash > Z_STRVAL_P (name ))
3281
- {
3282
- RETURN_STRINGL (Z_STRVAL_P (name ), backslash - Z_STRVAL_P (name ));
3260
+
3261
+ GET_REFLECTION_OBJECT_PTR (fptr );
3262
+
3263
+ zend_string * name = fptr -> common .function_name ;
3264
+ const char * backslash = zend_memrchr (ZSTR_VAL (name ), '\\' , ZSTR_LEN (name ));
3265
+ if (backslash && backslash > ZSTR_VAL (name )) {
3266
+ RETURN_STRINGL (ZSTR_VAL (name ), backslash - ZSTR_VAL (name ));
3283
3267
}
3284
3268
RETURN_EMPTY_STRING ();
3285
3269
}
@@ -3289,22 +3273,21 @@ ZEND_METHOD(reflection_function, getNamespaceName)
3289
3273
Returns the short name of the function (without namespace part) */
3290
3274
ZEND_METHOD (reflection_function , getShortName )
3291
3275
{
3292
- zval * name ;
3293
- const char * backslash ;
3276
+ reflection_object * intern ;
3277
+ zend_function * fptr ;
3294
3278
3295
3279
if (zend_parse_parameters_none () == FAILURE ) {
3296
3280
RETURN_THROWS ();
3297
3281
}
3298
- if ((name = _default_load_name (ZEND_THIS )) == NULL ) {
3299
- RETURN_FALSE ;
3300
- }
3301
- if (Z_TYPE_P (name ) == IS_STRING
3302
- && (backslash = zend_memrchr (Z_STRVAL_P (name ), '\\' , Z_STRLEN_P (name )))
3303
- && backslash > Z_STRVAL_P (name ))
3304
- {
3305
- RETURN_STRINGL (backslash + 1 , Z_STRLEN_P (name ) - (backslash - Z_STRVAL_P (name ) + 1 ));
3282
+
3283
+ GET_REFLECTION_OBJECT_PTR (fptr );
3284
+
3285
+ zend_string * name = fptr -> common .function_name ;
3286
+ const char * backslash = zend_memrchr (ZSTR_VAL (name ), '\\' , ZSTR_LEN (name ));
3287
+ if (backslash && backslash > ZSTR_VAL (name )) {
3288
+ RETURN_STRINGL (backslash + 1 , ZSTR_LEN (name ) - (backslash - ZSTR_VAL (name ) + 1 ));
3306
3289
}
3307
- ZVAL_COPY_DEREF ( return_value , name );
3290
+ RETURN_STR_COPY ( name );
3308
3291
}
3309
3292
/* }}} */
3310
3293
@@ -5074,43 +5057,38 @@ ZEND_METHOD(reflection_class, getExtensionName)
5074
5057
Returns whether this class is defined in namespace */
5075
5058
ZEND_METHOD (reflection_class , inNamespace )
5076
5059
{
5077
- zval * name ;
5078
- const char * backslash ;
5060
+ reflection_object * intern ;
5061
+ zend_class_entry * ce ;
5079
5062
5080
5063
if (zend_parse_parameters_none () == FAILURE ) {
5081
5064
RETURN_THROWS ();
5082
5065
}
5083
- if ((name = _default_load_name (ZEND_THIS )) == NULL ) {
5084
- RETURN_FALSE ;
5085
- }
5086
- if (Z_TYPE_P (name ) == IS_STRING
5087
- && (backslash = zend_memrchr (Z_STRVAL_P (name ), '\\' , Z_STRLEN_P (name )))
5088
- && backslash > Z_STRVAL_P (name ))
5089
- {
5090
- RETURN_TRUE ;
5091
- }
5092
- RETURN_FALSE ;
5066
+
5067
+ GET_REFLECTION_OBJECT_PTR (ce );
5068
+
5069
+ zend_string * name = ce -> name ;
5070
+ const char * backslash = zend_memrchr (ZSTR_VAL (name ), '\\' , ZSTR_LEN (name ));
5071
+ RETURN_BOOL (backslash && backslash > ZSTR_VAL (name ));
5093
5072
}
5094
5073
/* }}} */
5095
5074
5096
5075
/* {{{ proto public string ReflectionClass::getNamespaceName()
5097
5076
Returns the name of namespace where this class is defined */
5098
5077
ZEND_METHOD (reflection_class , getNamespaceName )
5099
5078
{
5100
- zval * name ;
5101
- const char * backslash ;
5079
+ reflection_object * intern ;
5080
+ zend_class_entry * ce ;
5102
5081
5103
5082
if (zend_parse_parameters_none () == FAILURE ) {
5104
5083
RETURN_THROWS ();
5105
5084
}
5106
- if ((name = _default_load_name (ZEND_THIS )) == NULL ) {
5107
- RETURN_FALSE ;
5108
- }
5109
- if (Z_TYPE_P (name ) == IS_STRING
5110
- && (backslash = zend_memrchr (Z_STRVAL_P (name ), '\\' , Z_STRLEN_P (name )))
5111
- && backslash > Z_STRVAL_P (name ))
5112
- {
5113
- RETURN_STRINGL (Z_STRVAL_P (name ), backslash - Z_STRVAL_P (name ));
5085
+
5086
+ GET_REFLECTION_OBJECT_PTR (ce );
5087
+
5088
+ zend_string * name = ce -> name ;
5089
+ const char * backslash = zend_memrchr (ZSTR_VAL (name ), '\\' , ZSTR_LEN (name ));
5090
+ if (backslash && backslash > ZSTR_VAL (name )) {
5091
+ RETURN_STRINGL (ZSTR_VAL (name ), backslash - ZSTR_VAL (name ));
5114
5092
}
5115
5093
RETURN_EMPTY_STRING ();
5116
5094
}
@@ -5120,22 +5098,21 @@ ZEND_METHOD(reflection_class, getNamespaceName)
5120
5098
Returns the short name of the class (without namespace part) */
5121
5099
ZEND_METHOD (reflection_class , getShortName )
5122
5100
{
5123
- zval * name ;
5124
- const char * backslash ;
5101
+ reflection_object * intern ;
5102
+ zend_class_entry * ce ;
5125
5103
5126
5104
if (zend_parse_parameters_none () == FAILURE ) {
5127
5105
RETURN_THROWS ();
5128
5106
}
5129
- if ((name = _default_load_name (ZEND_THIS )) == NULL ) {
5130
- RETURN_FALSE ;
5131
- }
5132
- if (Z_TYPE_P (name ) == IS_STRING
5133
- && (backslash = zend_memrchr (Z_STRVAL_P (name ), '\\' , Z_STRLEN_P (name )))
5134
- && backslash > Z_STRVAL_P (name ))
5135
- {
5136
- RETURN_STRINGL (backslash + 1 , Z_STRLEN_P (name ) - (backslash - Z_STRVAL_P (name ) + 1 ));
5107
+
5108
+ GET_REFLECTION_OBJECT_PTR (ce );
5109
+
5110
+ zend_string * name = ce -> name ;
5111
+ const char * backslash = zend_memrchr (ZSTR_VAL (name ), '\\' , ZSTR_LEN (name ));
5112
+ if (backslash && backslash > ZSTR_VAL (name )) {
5113
+ RETURN_STRINGL (backslash + 1 , ZSTR_LEN (name ) - (backslash - ZSTR_VAL (name ) + 1 ));
5137
5114
}
5138
- ZVAL_COPY_DEREF ( return_value , name );
5115
+ RETURN_STR_COPY ( name );
5139
5116
}
5140
5117
/* }}} */
5141
5118
@@ -5330,7 +5307,7 @@ ZEND_METHOD(reflection_property, getValue)
5330
5307
{
5331
5308
reflection_object * intern ;
5332
5309
property_reference * ref ;
5333
- zval * object = NULL , * name ;
5310
+ zval * object = NULL ;
5334
5311
zval * member_p = NULL ;
5335
5312
5336
5313
if (zend_parse_parameters (ZEND_NUM_ARGS (), "|o!" , & object ) == FAILURE ) {
@@ -5340,9 +5317,9 @@ ZEND_METHOD(reflection_property, getValue)
5340
5317
GET_REFLECTION_OBJECT_PTR (ref );
5341
5318
5342
5319
if (!(prop_get_flags (ref ) & ZEND_ACC_PUBLIC ) && intern -> ignore_visibility == 0 ) {
5343
- name = _default_load_name (ZEND_THIS );
5344
5320
zend_throw_exception_ex (reflection_exception_ptr , 0 ,
5345
- "Cannot access non-public member %s::$%s" , ZSTR_VAL (intern -> ce -> name ), Z_STRVAL_P (name ));
5321
+ "Cannot access non-public member %s::$%s" ,
5322
+ ZSTR_VAL (intern -> ce -> name ), ZSTR_VAL (ref -> unmangled_name ));
5346
5323
RETURN_THROWS ();
5347
5324
}
5348
5325
@@ -5384,16 +5361,16 @@ ZEND_METHOD(reflection_property, setValue)
5384
5361
{
5385
5362
reflection_object * intern ;
5386
5363
property_reference * ref ;
5387
- zval * object , * name ;
5364
+ zval * object ;
5388
5365
zval * value ;
5389
5366
zval * tmp ;
5390
5367
5391
5368
GET_REFLECTION_OBJECT_PTR (ref );
5392
5369
5393
5370
if (!(prop_get_flags (ref ) & ZEND_ACC_PUBLIC ) && intern -> ignore_visibility == 0 ) {
5394
- name = _default_load_name (ZEND_THIS );
5395
5371
zend_throw_exception_ex (reflection_exception_ptr , 0 ,
5396
- "Cannot access non-public member %s::$%s" , ZSTR_VAL (intern -> ce -> name ), Z_STRVAL_P (name ));
5372
+ "Cannot access non-public member %s::$%s" ,
5373
+ ZSTR_VAL (intern -> ce -> name ), ZSTR_VAL (ref -> unmangled_name ));
5397
5374
RETURN_THROWS ();
5398
5375
}
5399
5376
@@ -5421,7 +5398,7 @@ ZEND_METHOD(reflection_property, isInitialized)
5421
5398
{
5422
5399
reflection_object * intern ;
5423
5400
property_reference * ref ;
5424
- zval * object = NULL , * name ;
5401
+ zval * object = NULL ;
5425
5402
zval * member_p = NULL ;
5426
5403
5427
5404
if (zend_parse_parameters (ZEND_NUM_ARGS (), "|o!" , & object ) == FAILURE ) {
@@ -5431,9 +5408,9 @@ ZEND_METHOD(reflection_property, isInitialized)
5431
5408
GET_REFLECTION_OBJECT_PTR (ref );
5432
5409
5433
5410
if (!(prop_get_flags (ref ) & ZEND_ACC_PUBLIC ) && intern -> ignore_visibility == 0 ) {
5434
- name = _default_load_name (getThis ());
5435
5411
zend_throw_exception_ex (reflection_exception_ptr , 0 ,
5436
- "Cannot access non-public member %s::$%s" , ZSTR_VAL (intern -> ce -> name ), Z_STRVAL_P (name ));
5412
+ "Cannot access non-public member %s::$%s" ,
5413
+ ZSTR_VAL (intern -> ce -> name ), ZSTR_VAL (ref -> unmangled_name ));
5437
5414
RETURN_THROWS ();
5438
5415
}
5439
5416
0 commit comments