PHP_METHOD(Phalcon_Mvc_Model_MetaData_Xcache, reset) { zval *meta = phalcon_fetch_nproperty_this(this_ptr, SL("_metaData"), PH_NOISY TSRMLS_CC); zval *real_key = NULL; PHALCON_MM_GROW(); if (SUCCESS == phalcon_function_exists_ex(SL("xcache_unset_by_prefix") TSRMLS_CC)) { zval *prefix = phalcon_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY TSRMLS_CC); PHALCON_INIT_VAR(real_key); phalcon_concat_svs(&real_key, SL("$PMM$"), prefix, SL("meta-"), 0 TSRMLS_CC); PHALCON_CALL_FUNCTION(NULL, "xcache_unset_by_prefix", real_key); } else if (Z_TYPE_P(meta) == IS_ARRAY) { HashTable *ht = Z_ARRVAL_P(meta); HashPosition hp; zval *prefix = phalcon_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY TSRMLS_CC); for ( zend_hash_internal_pointer_reset_ex(ht, &hp); zend_hash_get_current_key_type_ex(ht, &hp) != HASH_KEY_NON_EXISTENT; zend_hash_move_forward_ex(ht, &hp) ) { zval key = phalcon_get_current_key_w(ht, &hp); PHALCON_INIT_NVAR(real_key); phalcon_concat_svsv(&real_key, SL("$PMM$"), prefix, SL("meta-"), &key, 0 TSRMLS_CC); PHALCON_CALL_FUNCTION(NULL, "xcache_unset", real_key); } } PHALCON_CALL_PARENT(NULL, phalcon_mvc_model_metadata_xcache_ce, getThis(), "reset"); PHALCON_MM_RESTORE(); }
PHP_METHOD(Phalcon_Mvc_Model_MetaData_Apc, reset) { zval *real_key = NULL, *meta; zend_string *str_key; ulong idx; PHALCON_MM_GROW(); meta = phalcon_read_property(getThis(), SL("_metaData"), PH_NOISY); if (Z_TYPE_P(meta) == IS_ARRAY) { zval *prefix = phalcon_read_property(getThis(), SL("_prefix"), PH_NOISY); ZEND_HASH_FOREACH_KEY(Z_ARRVAL_P(meta), idx, str_key) { zval key; if (str_key) { ZVAL_STR(&key, str_key); } else { ZVAL_LONG(&key, idx); } PHALCON_INIT_NVAR(real_key); phalcon_concat_svsv(real_key, SL("$PMM$"), prefix, SL("meta-"), &key, 0); PHALCON_CALL_FUNCTION(NULL, "apc_delete", real_key); } ZEND_HASH_FOREACH_END();
PHP_METHOD(Phalcon_Mvc_Model_MetaData_Apc, reset){ zval meta = {}, prefix = {}; zend_string *str_key; ulong idx; phalcon_read_property(&meta, getThis(), SL("_metaData"), PH_NOISY); if (Z_TYPE(meta) == IS_ARRAY) { phalcon_read_property(&prefix, getThis(), SL("_prefix"), PH_NOISY); ZEND_HASH_FOREACH_KEY(Z_ARRVAL(meta), idx, str_key) { zval key = {}, real_key = {}; if (str_key) { ZVAL_STR(&key, str_key); } else { ZVAL_LONG(&key, idx); } phalcon_concat_svsv(&real_key, SL("$PMM$"), &prefix, SL("meta-"), &key, 0); PHALCON_CALL_FUNCTION(NULL, "apc_delete", &real_key); } ZEND_HASH_FOREACH_END();