@@ -316,7 +316,7 @@ static void phalcon_config_object_dtor(void* v TSRMLS_DC)
316
316
*/
317
317
static zend_object_value phalcon_config_object_ctor (zend_class_entry * ce TSRMLS_DC )
318
318
{
319
- phalcon_config_object * obj = ecalloc (1 , sizeof (phalcon_config_object ));
319
+ phalcon_config_object * obj = ecalloc (1 , sizeof (phalcon_config_object ));
320
320
zend_object_value retval ;
321
321
322
322
zend_object_std_init (& obj -> obj , ce TSRMLS_CC );
@@ -331,14 +331,27 @@ static zend_object_value phalcon_config_object_ctor(zend_class_entry* ce TSRMLS_
331
331
obj ,
332
332
(zend_objects_store_dtor_t )zend_objects_destroy_object ,
333
333
phalcon_config_object_dtor ,
334
- NULL TSRMLS_CC
334
+ NULL
335
+ TSRMLS_CC
335
336
);
336
337
337
338
retval .handlers = & phalcon_config_object_handlers ;
338
339
339
340
return retval ;
340
341
}
341
342
343
+ static zend_object_value phalcon_config_clone_obj (zval * object TSRMLS_DC )
344
+ {
345
+ phalcon_config_object * orig = fetchPhalconConfigObject (object TSRMLS_CC );
346
+ zend_object_value result = phalcon_config_object_ctor (Z_OBJCE_P (object ) TSRMLS_CC );
347
+ phalcon_config_object * clone = zend_object_store_get_object_by_handle (result .handle TSRMLS_CC );
348
+
349
+ zend_objects_clone_members (& clone -> obj , result , & orig -> obj , Z_OBJ_HANDLE_P (object ) TSRMLS_CC );
350
+ zend_hash_copy (clone -> props , orig -> props , (copy_ctor_func_t )zval_add_ref , NULL , sizeof (zval * ));
351
+
352
+ return result ;
353
+ }
354
+
342
355
/**
343
356
* Phalcon\Config initializer
344
357
*/
@@ -360,6 +373,7 @@ PHALCON_INIT_CLASS(Phalcon_Config){
360
373
phalcon_config_object_handlers .has_dimension = phalcon_config_has_dimension ;
361
374
phalcon_config_object_handlers .get_properties = phalcon_config_get_properties ;
362
375
phalcon_config_object_handlers .compare_objects = phalcon_config_compare_objects ;
376
+ phalcon_config_object_handlers .clone_obj = phalcon_config_clone_obj ;
363
377
364
378
zend_class_implements (phalcon_config_ce TSRMLS_CC , 2 , zend_ce_arrayaccess , spl_ce_Countable );
365
379
0 commit comments