@@ -119,32 +119,6 @@ void zend_verify_enum(zend_class_entry *ce)
119
119
zend_verify_enum_interfaces (ce );
120
120
}
121
121
122
- static zval * zend_enum_read_property (zend_object * zobj , zend_string * name , int type , void * * cache_slot , zval * rv ) /* {{{ */
123
- {
124
- if (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET ) {
125
- zend_throw_error (NULL , "Cannot acquire reference to property %s::$%s" , ZSTR_VAL (zobj -> ce -> name ), ZSTR_VAL (name ));
126
- return & EG (uninitialized_zval );
127
- }
128
-
129
- return zend_std_read_property (zobj , name , type , cache_slot , rv );
130
- }
131
-
132
- static ZEND_COLD zval * zend_enum_write_property (zend_object * object , zend_string * member , zval * value , void * * cache_slot )
133
- {
134
- ZEND_ENUM_PROPERTY_ERROR ();
135
- return & EG (uninitialized_zval );
136
- }
137
-
138
- static ZEND_COLD void zend_enum_unset_property (zend_object * object , zend_string * member , void * * cache_slot )
139
- {
140
- ZEND_ENUM_PROPERTY_ERROR ();
141
- }
142
-
143
- static zval * zend_enum_get_property_ptr_ptr (zend_object * zobj , zend_string * name , int type , void * * cache_slot )
144
- {
145
- return NULL ;
146
- }
147
-
148
122
static int zend_implement_unit_enum (zend_class_entry * interface , zend_class_entry * class_type )
149
123
{
150
124
if (class_type -> ce_flags & ZEND_ACC_ENUM ) {
@@ -186,10 +160,6 @@ void zend_register_enum_ce(void)
186
160
zend_ce_backed_enum -> interface_gets_implemented = zend_implement_backed_enum ;
187
161
188
162
memcpy (& enum_handlers , & std_object_handlers , sizeof (zend_object_handlers ));
189
- enum_handlers .read_property = zend_enum_read_property ;
190
- enum_handlers .write_property = zend_enum_write_property ;
191
- enum_handlers .unset_property = zend_enum_unset_property ;
192
- enum_handlers .get_property_ptr_ptr = zend_enum_get_property_ptr_ptr ;
193
163
enum_handlers .clone_obj = NULL ;
194
164
enum_handlers .compare = zend_objects_not_comparable ;
195
165
}
@@ -359,16 +329,18 @@ void zend_enum_register_funcs(zend_class_entry *ce)
359
329
360
330
void zend_enum_register_props (zend_class_entry * ce )
361
331
{
332
+ ce -> ce_flags |= ZEND_ACC_NO_DYNAMIC_PROPERTIES ;
333
+
362
334
zval name_default_value ;
363
335
ZVAL_UNDEF (& name_default_value );
364
336
zend_type name_type = ZEND_TYPE_INIT_CODE (IS_STRING , 0 , 0 );
365
- zend_declare_typed_property (ce , ZSTR_KNOWN (ZEND_STR_NAME ), & name_default_value , ZEND_ACC_PUBLIC , NULL , name_type );
337
+ zend_declare_typed_property (ce , ZSTR_KNOWN (ZEND_STR_NAME ), & name_default_value , ZEND_ACC_PUBLIC | ZEND_ACC_READONLY , NULL , name_type );
366
338
367
339
if (ce -> enum_backing_type != IS_UNDEF ) {
368
340
zval value_default_value ;
369
341
ZVAL_UNDEF (& value_default_value );
370
342
zend_type value_type = ZEND_TYPE_INIT_CODE (ce -> enum_backing_type , 0 , 0 );
371
- zend_declare_typed_property (ce , ZSTR_KNOWN (ZEND_STR_VALUE ), & value_default_value , ZEND_ACC_PUBLIC , NULL , value_type );
343
+ zend_declare_typed_property (ce , ZSTR_KNOWN (ZEND_STR_VALUE ), & value_default_value , ZEND_ACC_PUBLIC | ZEND_ACC_READONLY , NULL , value_type );
372
344
}
373
345
}
374
346
0 commit comments