/** * Serializing a resultset will dump all related rows into a big array * * @return string */ PHP_METHOD(Phalcon_Mvc_Model_Resultset_Complex, serialize){ zval *records = NULL, *cache, *column_types, *hydrate_mode; zval *data, *serialized; PHALCON_MM_GROW(); /** * Obtain the records as an array */ PHALCON_CALL_METHOD(&records, this_ptr, "toarray"); cache = phalcon_fetch_nproperty_this(this_ptr, SL("_cache"), PH_NOISY TSRMLS_CC); column_types = phalcon_fetch_nproperty_this(this_ptr, SL("_columnTypes"), PH_NOISY TSRMLS_CC); hydrate_mode = phalcon_fetch_nproperty_this(this_ptr, SL("_hydrateMode"), PH_NOISY TSRMLS_CC); PHALCON_INIT_VAR(data); array_init_size(data, 4); phalcon_array_update_string(&data, SL("cache"), cache, PH_COPY); phalcon_array_update_string(&data, SL("rows"), records, PH_COPY); phalcon_array_update_string(&data, SL("columnTypes"), column_types, PH_COPY); phalcon_array_update_string(&data, SL("hydrateMode"), hydrate_mode, PH_COPY); PHALCON_INIT_VAR(serialized); phalcon_serialize(serialized, &data TSRMLS_CC); /** * Avoid return bad serialized data */ if (Z_TYPE_P(serialized) != IS_STRING) { RETURN_MM_NULL(); } RETURN_CTOR(serialized); }
/** * Serializing a resultset will dump all related rows into a big array * * @return string */ PHP_METHOD(Phalcon_Mvc_Model_Resultset_Complex, serialize){ zval *records, *cache, *column_types, *hydrate_mode; zval *data, *serialized; PHALCON_MM_GROW(); /** * Obtain the records as an array */ PHALCON_INIT_VAR(records); phalcon_call_method(records, this_ptr, "toarray"); PHALCON_OBS_VAR(cache); phalcon_read_property_this(&cache, this_ptr, SL("_cache"), PH_NOISY_CC); PHALCON_OBS_VAR(column_types); phalcon_read_property_this(&column_types, this_ptr, SL("_columnTypes"), PH_NOISY_CC); PHALCON_OBS_VAR(hydrate_mode); phalcon_read_property_this(&hydrate_mode, this_ptr, SL("_hydrateMode"), PH_NOISY_CC); PHALCON_INIT_VAR(data); array_init_size(data, 4); phalcon_array_update_string(&data, SL("cache"), &cache, PH_COPY | PH_SEPARATE); phalcon_array_update_string(&data, SL("rows"), &records, PH_COPY | PH_SEPARATE); phalcon_array_update_string(&data, SL("columnTypes"), &column_types, PH_COPY | PH_SEPARATE); phalcon_array_update_string(&data, SL("hydrateMode"), &hydrate_mode, PH_COPY | PH_SEPARATE); PHALCON_INIT_VAR(serialized); phalcon_serialize(serialized, &data TSRMLS_CC); /** * Avoid return bad serialized data */ if (Z_TYPE_P(serialized) != IS_STRING) { RETURN_MM_NULL(); } RETURN_CTOR(serialized); }
/** * Writes parsed annotations to XCache * * @param string $key * @param Phalcon\Annotations\Reflection $data */ PHP_METHOD(Phalcon_Annotations_Adapter_Xcache, write){ zval *key, *data, *prefixed_key, *prefixed_lower; zval *serialized; PHALCON_MM_GROW(); phalcon_fetch_params(1, 2, 0, &key, &data); PHALCON_INIT_VAR(prefixed_key); PHALCON_CONCAT_SV(prefixed_key, "_PHAN", key); PHALCON_INIT_VAR(prefixed_lower); phalcon_fast_strtolower(prefixed_lower, prefixed_key); PHALCON_INIT_VAR(serialized); phalcon_serialize(serialized, &data TSRMLS_CC); phalcon_call_func_p2_noret("xcache_set", prefixed_lower, serialized); PHALCON_MM_RESTORE(); }