/** * Gets an attribute from the configuration, if the attribute isn't defined returns null * If the value is exactly null or is not defined the default value will be used instead * *<code> * echo $config->get('controllersDir', '../app/controllers/'); *</code> */ PHP_METHOD(Phalcon_Config, get) { int ZEPHIR_LAST_CALL_STATUS; zval *index = NULL, *defaultValue = NULL, *_0 = NULL, *_1; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &index, &defaultValue); ZEPHIR_SEPARATE_PARAM(index); if (!defaultValue) { defaultValue = ZEPHIR_GLOBAL(global_null); } ZEPHIR_CALL_FUNCTION(&_0, "strval", NULL, 20, index); zephir_check_call_status(); ZEPHIR_CPY_WRT(index, _0); if (zephir_isset_property_zval(this_ptr, index TSRMLS_CC)) { ZEPHIR_OBS_VAR(_1); zephir_read_property_zval(&_1, this_ptr, index, PH_NOISY_CC); RETURN_CCTOR(_1); } RETVAL_ZVAL(defaultValue, 1, 0); RETURN_MM(); }
/** * Checks whether offset exists in the row * * @param string|int $index * @return boolean */ PHP_METHOD(Phalcon_Mvc_Model_Row, offsetExists) { zval *index; zephir_fetch_params(0, 1, 0, &index); RETURN_BOOL(zephir_isset_property_zval(this_ptr, index TSRMLS_CC)); }
PHP_METHOD(Test_IssetTest, testIssetProperty2) { zval *a, *b; zephir_fetch_params(0, 2, 0, &a, &b); RETURN_BOOL(zephir_isset_property_zval(a, b TSRMLS_CC)); }
/** * Whether the item given by key exists * * @param string * @return boolean */ PHP_METHOD(Xpl_Collection_ArrayObject, has) { zval *key_param = NULL; zval *key = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &key_param); zephir_get_strval(key, key_param); RETURN_MM_BOOL(zephir_isset_property_zval(this_ptr, key TSRMLS_CC)); }
/** * Allows to check whether an attribute is defined using the array-syntax * *<code> * var_dump(isset($config['database'])); *</code> */ PHP_METHOD(Phalcon_Config, offsetExists) { int ZEPHIR_LAST_CALL_STATUS; zval *index = NULL, *_0 = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &index); ZEPHIR_SEPARATE_PARAM(index); ZEPHIR_CALL_FUNCTION(&_0, "strval", NULL, 20, index); zephir_check_call_status(); ZEPHIR_CPY_WRT(index, _0); RETURN_MM_BOOL(zephir_isset_property_zval(this_ptr, index TSRMLS_CC)); }
/** * Returns an item by key * * @param string * @return mixed */ PHP_METHOD(Xpl_Collection_ArrayObject, get) { zval *key_param = NULL, *_0; zval *key = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &key_param); zephir_get_strval(key, key_param); ZEPHIR_INIT_VAR(_0); if (zephir_isset_property_zval(this_ptr, key TSRMLS_CC)) { zephir_read_property_zval(&_0, this_ptr, key, PH_NOISY_CC); } else { ZVAL_NULL(_0); } RETURN_CCTOR(_0); }
/** * Checks whether an offset exists in the document * * @param int index * @return boolean */ PHP_METHOD(Phalcon_Mvc_Collection_Document, offsetExists) { zval *index_param = NULL; zval *index = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &index_param); if (unlikely(Z_TYPE_P(index_param) != IS_STRING && Z_TYPE_P(index_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'index' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(index_param) == IS_STRING)) { zephir_get_strval(index, index_param); } else { ZEPHIR_INIT_VAR(index); ZVAL_EMPTY_STRING(index); } RETURN_MM_BOOL(zephir_isset_property_zval(this_ptr, index TSRMLS_CC)); }
/** * Gets the a value to validate in the array/object data source * * @param string field * @return mixed */ PHP_METHOD(Phalcon_Validation, getValue) { zend_bool _0$$10; zephir_fcall_cache_entry *_1 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *field_param = NULL, *entity = NULL, *method = NULL, *value = NULL, *data = NULL, *values = NULL, *filters = NULL, *fieldFilters = NULL, *dependencyInjector = NULL, *filterService = NULL, *camelizedField = NULL, *_2$$20, *_3$$20 = NULL, *_4$$28 = NULL; zval *field = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &field_param); zephir_get_strval(field, field_param); ZEPHIR_OBS_VAR(entity); zephir_read_property_this(&entity, this_ptr, SL("_entity"), PH_NOISY_CC); if (Z_TYPE_P(entity) == IS_OBJECT) { ZEPHIR_INIT_VAR(camelizedField); zephir_camelize(camelizedField, field, NULL ); ZEPHIR_INIT_VAR(method); ZEPHIR_CONCAT_SV(method, "get", camelizedField); if ((zephir_method_exists(entity, method TSRMLS_CC) == SUCCESS)) { ZEPHIR_CALL_METHOD_ZVAL(&value, entity, method, NULL, 0); zephir_check_call_status(); } else { if ((zephir_method_exists_ex(entity, SS("readattribute") TSRMLS_CC) == SUCCESS)) { ZEPHIR_CALL_METHOD(&value, entity, "readattribute", NULL, 0, field); zephir_check_call_status(); } else { ZEPHIR_INIT_NVAR(value); if (zephir_isset_property_zval(entity, field TSRMLS_CC)) { zephir_read_property_zval(&value, entity, field, PH_NOISY_CC); } else { ZVAL_NULL(value); } } } } else { ZEPHIR_OBS_VAR(data); zephir_read_property_this(&data, this_ptr, SL("_data"), PH_NOISY_CC); _0$$10 = Z_TYPE_P(data) != IS_ARRAY; if (_0$$10) { _0$$10 = Z_TYPE_P(data) != IS_OBJECT; } if (_0$$10) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_validation_exception_ce, "There is no data to validate", "phalcon/validation.zep", 499); return; } ZEPHIR_OBS_VAR(values); zephir_read_property_this(&values, this_ptr, SL("_values"), PH_NOISY_CC); ZEPHIR_OBS_NVAR(value); if (zephir_array_isset_fetch(&value, values, field, 0 TSRMLS_CC)) { RETURN_CCTOR(value); } ZEPHIR_INIT_NVAR(value); ZVAL_NULL(value); if (Z_TYPE_P(data) == IS_ARRAY) { if (zephir_array_isset(data, field)) { ZEPHIR_OBS_NVAR(value); zephir_array_fetch(&value, data, field, PH_NOISY, "phalcon/validation.zep", 511 TSRMLS_CC); } } else { if (Z_TYPE_P(data) == IS_OBJECT) { if (zephir_isset_property_zval(data, field TSRMLS_CC)) { ZEPHIR_OBS_NVAR(value); zephir_read_property_zval(&value, data, field, PH_NOISY_CC); } } } } if (Z_TYPE_P(value) == IS_NULL) { RETURN_MM_NULL(); } ZEPHIR_OBS_VAR(filters); zephir_read_property_this(&filters, this_ptr, SL("_filters"), PH_NOISY_CC); ZEPHIR_OBS_VAR(fieldFilters); if (zephir_array_isset_fetch(&fieldFilters, filters, field, 0 TSRMLS_CC)) { if (zephir_is_true(fieldFilters)) { ZEPHIR_CALL_METHOD(&dependencyInjector, this_ptr, "getdi", NULL, 0); zephir_check_call_status(); if (Z_TYPE_P(dependencyInjector) != IS_OBJECT) { ZEPHIR_CALL_CE_STATIC(&dependencyInjector, phalcon_di_ce, "getdefault", &_1, 1); zephir_check_call_status(); if (Z_TYPE_P(dependencyInjector) != IS_OBJECT) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_validation_exception_ce, "A dependency injector is required to obtain the 'filter' service", "phalcon/validation.zep", 536); return; } } ZEPHIR_INIT_VAR(_2$$20); ZVAL_STRING(_2$$20, "filter", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&filterService, dependencyInjector, "getshared", NULL, 0, _2$$20); zephir_check_temp_parameter(_2$$20); zephir_check_call_status(); if (Z_TYPE_P(filterService) != IS_OBJECT) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_validation_exception_ce, "Returned 'filter' service is invalid", "phalcon/validation.zep", 542); return; } ZEPHIR_CALL_METHOD(&_3$$20, filterService, "sanitize", NULL, 0, value, fieldFilters); zephir_check_call_status(); ZEPHIR_CPY_WRT(value, _3$$20); if (Z_TYPE_P(entity) == IS_OBJECT) { ZEPHIR_INIT_NVAR(method); ZEPHIR_CONCAT_SV(method, "set", camelizedField); if ((zephir_method_exists(entity, method TSRMLS_CC) == SUCCESS)) { ZEPHIR_CALL_METHOD_ZVAL(NULL, entity, method, NULL, 0, value); zephir_check_call_status(); } else { if ((zephir_method_exists_ex(entity, SS("writeattribute") TSRMLS_CC) == SUCCESS)) { ZEPHIR_CALL_METHOD(NULL, entity, "writeattribute", NULL, 0, field, value); zephir_check_call_status(); } else { ZEPHIR_CALL_FUNCTION(&_4$$28, "property_exists", NULL, 329, entity, field); zephir_check_call_status(); if (zephir_is_true(_4$$28)) { zephir_update_property_zval_zval(entity, field, value TSRMLS_CC); } } } } RETURN_CCTOR(value); } } if (Z_TYPE_P(entity) != IS_OBJECT) { zephir_update_property_array(this_ptr, SL("_values"), field, value TSRMLS_CC); } RETURN_CCTOR(value); }
/** * Helper method for merge configs (forwarding nested config instance) * * @param Config config * @param Config instance = null * * @return Config merged config */ PHP_METHOD(Phalcon_Config, _merge) { zephir_fcall_cache_entry *_8 = NULL, *_9 = NULL; zend_bool _4, _5; HashTable *_2; HashPosition _1; int ZEPHIR_LAST_CALL_STATUS; zval *config, *instance = NULL, *key = NULL, *value = NULL, *number = NULL, *_0 = NULL, **_3, *_6 = NULL, *_7 = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &config, &instance); if (!instance) { ZEPHIR_CPY_WRT(instance, ZEPHIR_GLOBAL(global_null)); } else { ZEPHIR_SEPARATE_PARAM(instance); } if (Z_TYPE_P(instance) != IS_OBJECT) { ZEPHIR_CPY_WRT(instance, this_ptr); } ZEPHIR_CALL_METHOD(&number, instance, "count", NULL, 0); zephir_check_call_status(); ZEPHIR_CALL_FUNCTION(&_0, "get_object_vars", NULL, 23, config); zephir_check_call_status(); zephir_is_iterable(_0, &_2, &_1, 0, 0, "phalcon/config.zep", 239); for ( ; zephir_hash_get_current_data_ex(_2, (void**) &_3, &_1) == SUCCESS ; zephir_hash_move_forward_ex(_2, &_1) ) { ZEPHIR_GET_HMKEY(key, _2, _1); ZEPHIR_GET_HVALUE(value, _3); _4 = zephir_isset_property_zval(instance, key TSRMLS_CC); if (_4) { _4 = Z_TYPE_P(value) == IS_OBJECT; } _5 = _4; if (_5) { ZEPHIR_OBS_NVAR(_6); zephir_read_property_zval(&_6, instance, key, PH_NOISY_CC); _5 = Z_TYPE_P(_6) == IS_OBJECT; } if (_5) { ZEPHIR_OBS_NVAR(_7); zephir_read_property_zval(&_7, instance, key, PH_NOISY_CC); ZEPHIR_CALL_METHOD(NULL, this_ptr, "_merge", &_8, 22, value, _7); zephir_check_call_status(); } else { if (Z_TYPE_P(key) == IS_LONG) { ZEPHIR_CALL_FUNCTION(&key, "strval", &_9, 20, number); zephir_check_call_status(); ZEPHIR_SEPARATE(number); zephir_increment(number); } zephir_update_property_zval_zval(instance, key, value TSRMLS_CC); } } RETVAL_ZVAL(instance, 1, 0); RETURN_MM(); }