本文整理汇总了C++中PHALCON_INIT_VAR函数的典型用法代码示例。如果您正苦于以下问题:C++ PHALCON_INIT_VAR函数的具体用法?C++ PHALCON_INIT_VAR怎么用?C++ PHALCON_INIT_VAR使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PHALCON_INIT_VAR函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PHP_METHOD
/**
* Generates a URL
*
*<code>
*
* //Generate a URL appending the URI to the base URI
* echo $url->get('products/edit/1');
*
* //Generate a URL for a predefined route
* echo $url->get(array('for' => 'blog-post', 'title' => 'some-cool-stuff', 'year' => '2012'));
* echo $url->get(array('for' => 'blog-post', 'hostname' => true, 'title' => 'some-cool-stuff', 'year' => '2012'));
*
*</code>
*
* @param string|array $uri
* @param array|object args Optional arguments to be appended to the query string
* @param bool|null $local
* @return string
*/
PHP_METHOD(Phalcon_Mvc_Url, get){
zval *uri = NULL, *args = NULL, *local = NULL, *base_uri = NULL, *router = NULL, *dependency_injector;
zval *service, *route_name, *hostname, *route = NULL, *exception_message;
zval *pattern = NULL, *paths = NULL, *processed_uri = NULL, *query_string;
zval *matched, *regexp;
zval *generator = NULL, *arguments;
PHALCON_MM_GROW();
phalcon_fetch_params(1, 0, 3, &uri, &args, &local);
if (!uri) {
uri = &PHALCON_GLOBAL(z_null);
}
if (!args) {
args = &PHALCON_GLOBAL(z_null);
}
if (!local) {
local = &PHALCON_GLOBAL(z_null);
} else {
PHALCON_SEPARATE_PARAM(local);
}
PHALCON_CALL_METHOD(&base_uri, getThis(), "getbaseuri");
if (Z_TYPE_P(uri) == IS_STRING) {
if (strstr(Z_STRVAL_P(uri), ":")) {
PHALCON_INIT_VAR(matched);
PHALCON_INIT_VAR(regexp);
ZVAL_STRING(regexp, "/^[^:\\/?#]++:/");
RETURN_MM_ON_FAILURE(phalcon_preg_match(matched, regexp, uri, NULL));
if (zend_is_true(matched)) {
PHALCON_INIT_NVAR(local);
ZVAL_FALSE(local);
}
}
if (Z_TYPE_P(local) == IS_NULL || zend_is_true(local)) {
PHALCON_CONCAT_VV(return_value, base_uri, uri);
} else {
ZVAL_ZVAL(return_value, uri, 1, 0);
}
} else if (Z_TYPE_P(uri) == IS_ARRAY) {
if (!phalcon_array_isset_str_fetch(&route_name, uri, SL("for"))) {
PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_url_exception_ce, "It's necessary to define the route name with the parameter \"for\"");
return;
}
router = phalcon_read_property(getThis(), SL("_router"), PH_NOISY);
/**
* Check if the router has not previously set
*/
if (Z_TYPE_P(router) != IS_OBJECT) {
dependency_injector = phalcon_read_property(getThis(), SL("_dependencyInjector"), PH_NOISY);
if (!zend_is_true(dependency_injector)) {
PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_url_exception_ce, "A dependency injector container is required to obtain the \"url\" service");
return;
}
PHALCON_INIT_VAR(service);
ZVAL_STR(service, IS(router));
router = NULL;
PHALCON_CALL_METHOD(&router, dependency_injector, "getshared", service);
PHALCON_VERIFY_INTERFACE(router, phalcon_mvc_routerinterface_ce);
phalcon_update_property_this(getThis(), SL("_router"), router);
}
/**
* Every route is uniquely identified by a name
*/
PHALCON_CALL_METHOD(&route, router, "getroutebyname", route_name);
if (Z_TYPE_P(route) != IS_OBJECT) {
PHALCON_INIT_VAR(exception_message);
PHALCON_CONCAT_SVS(exception_message, "Cannot obtain a route using the name \"", route_name, "\"");
PHALCON_THROW_EXCEPTION_ZVAL(phalcon_mvc_url_exception_ce, exception_message);
return;
//.........这里部分代码省略.........
示例2: PHP_METHOD
PHP_METHOD(Phalcon_Http_Client_Header, build){
zval *flags = NULL, *messages, *status_code, *message = NULL, *version, *lines, *line = NULL;
zval *fields, *filed = NULL, *value = NULL, *join_filed;
HashTable *ah0;
HashPosition hp0;
zval **hd;
int f = 0;
PHALCON_MM_GROW();
phalcon_fetch_params(1, 0, 1, &flags);
if (flags) {
f = phalcon_get_intval(flags);
}
PHALCON_INIT_VAR(lines);
array_init(lines);
PHALCON_OBS_VAR(messages);
phalcon_read_static_property_ce(&messages, phalcon_http_client_header_ce, SL("_messages") TSRMLS_CC);
status_code = phalcon_fetch_nproperty_this(this_ptr, SL("_status_code"), PH_NOISY TSRMLS_CC);
if ((f & PHALCON_HTTP_CLIENT_HEADER_BUILD_STATUS) && phalcon_array_isset_fetch(&message, messages, status_code)) {
version = phalcon_fetch_nproperty_this(this_ptr, SL("_version "), PH_NOISY TSRMLS_CC);
PHALCON_INIT_NVAR(line);
PHALCON_CONCAT_SVS(line, "HTTP/", version, " ");
PHALCON_SCONCAT_VSV(line, status_code, " ", message);
phalcon_merge_append(lines, line);
}
fields = phalcon_fetch_nproperty_this(this_ptr, SL("_fields"), PH_NOISY TSRMLS_CC);
phalcon_is_iterable(fields, &ah0, &hp0, 0, 0);
while (zend_hash_get_current_data_ex(ah0, (void**) &hd, &hp0) == SUCCESS) {
PHALCON_GET_HKEY(filed, ah0, hp0);
PHALCON_GET_HVALUE(value);
PHALCON_INIT_NVAR(line);
PHALCON_CONCAT_VSV(line, filed, ": ", value);
phalcon_merge_append(lines, line);
zend_hash_move_forward_ex(ah0, &hp0);
}
if (f & PHALCON_HTTP_CLIENT_HEADER_BUILD_FIELDS) {
PHALCON_INIT_VAR(join_filed);
phalcon_fast_join_str(join_filed, SL("\r\n"), lines TSRMLS_CC);
RETURN_CCTOR(join_filed);
}
RETURN_CCTOR(lines);
}
示例3: PHP_METHOD
/**
* Returns a PHQL statement built based on the builder parameters
*
* @return string
*/
PHP_METHOD(Phalcon_Mvc_Model_Query_Builder, getPhql){
zval *dependency_injector = NULL, *models, *conditions = NULL;
zval *one, *number_models, *invalid_condition;
zval *model = NULL, *service_name, *meta_data, *model_instance;
zval *no_primary = NULL, *primary_keys, *first_primary_key;
zval *column_map = NULL, *attribute_field = NULL, *exception_message;
zval *primary_key_condition, *phql, *columns;
zval *selected_columns = NULL, *column = NULL, *column_alias = NULL;
zval *aliased_column = NULL, *joined_columns = NULL, *model_column_alias = NULL;
zval *selected_column = NULL, *selected_models, *model_alias = NULL;
zval *selected_model = NULL, *joined_models, *joins;
zval *join = NULL, *join_model = NULL, *join_conditions = NULL, *join_alias = NULL;
zval *join_type = NULL, *group, *group_items, *group_item = NULL;
zval *escaped_item = NULL, *joined_items = NULL, *having, *order;
zval *order_items, *order_item = NULL, *limit, *number;
zval *offset = NULL;
HashTable *ah0, *ah1, *ah2, *ah3, *ah4, *ah5;
HashPosition hp0, hp1, hp2, hp3, hp4, hp5;
zval **hd;
zend_class_entry *ce0;
PHALCON_MM_GROW();
PHALCON_OBS_VAR(dependency_injector);
phalcon_read_property_this(&dependency_injector, this_ptr, SL("_dependencyInjector"), PH_NOISY_CC);
if (Z_TYPE_P(dependency_injector) != IS_OBJECT) {
PHALCON_INIT_NVAR(dependency_injector);
PHALCON_CALL_STATIC(dependency_injector, "phalcon\\di", "getdefault");
phalcon_update_property_this(this_ptr, SL("_dependencyInjector"), dependency_injector TSRMLS_CC);
}
PHALCON_OBS_VAR(models);
phalcon_read_property_this(&models, this_ptr, SL("_models"), PH_NOISY_CC);
if (Z_TYPE_P(models) == IS_ARRAY) {
if (!phalcon_fast_count_ev(models TSRMLS_CC)) {
PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "At least one model is required to build the query");
return;
}
} else {
if (!zend_is_true(models)) {
PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "At least one model is required to build the query");
return;
}
}
PHALCON_OBS_VAR(conditions);
phalcon_read_property_this(&conditions, this_ptr, SL("_conditions"), PH_NOISY_CC);
if (phalcon_is_numeric(conditions)) {
/**
* If the conditions is a single numeric field. We internally create a condition
* using the related primary key
*/
if (Z_TYPE_P(models) == IS_ARRAY) {
PHALCON_INIT_VAR(one);
ZVAL_LONG(one, 1);
PHALCON_INIT_VAR(number_models);
phalcon_fast_count(number_models, models TSRMLS_CC);
PHALCON_INIT_VAR(invalid_condition);
is_smaller_function(invalid_condition, one, number_models TSRMLS_CC);
if (PHALCON_IS_TRUE(invalid_condition)) {
PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Cannot build the query. Invalid condition");
return;
}
PHALCON_OBS_VAR(model);
phalcon_array_fetch_long(&model, models, 0, PH_NOISY);
} else {
PHALCON_CPY_WRT(model, models);
}
PHALCON_INIT_VAR(service_name);
ZVAL_STRING(service_name, "modelsMetadata", 1);
/**
* Get the models metadata service to obtain the column names, column map and
* primary key
*/
PHALCON_INIT_VAR(meta_data);
phalcon_call_method_p1(meta_data, dependency_injector, "getshared", service_name);
ce0 = phalcon_fetch_class(model TSRMLS_CC);
PHALCON_INIT_VAR(model_instance);
object_init_ex(model_instance, ce0);
if (phalcon_has_constructor(model_instance TSRMLS_CC)) {
phalcon_call_method_p1_noret(model_instance, "__construct", dependency_injector);
}
PHALCON_INIT_VAR(no_primary);
ZVAL_BOOL(no_primary, 1);
//.........这里部分代码省略.........
示例4: PHP_METHOD
/**
* Rollbacks the transaction
*
* @param string $rollbackMessage
* @param Phalcon\Mvc\Model $rollbackRecord
* @return boolean
*/
PHP_METHOD(Phalcon_Mvc_Model_Transaction, rollback){
zval *rollback_message = NULL, *rollback_record = NULL;
zval *manager = NULL, *connection = NULL, *success = NULL;
zval *a0 = NULL, *a1 = NULL;
zval *i0 = NULL;
zval *t0 = NULL;
PHALCON_MM_GROW();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|zz", &rollback_message, &rollback_record) == FAILURE) {
PHALCON_MM_RESTORE();
RETURN_NULL();
}
if (!rollback_message) {
PHALCON_ALLOC_ZVAL_MM(rollback_message);
ZVAL_NULL(rollback_message);
} else {
PHALCON_SEPARATE_PARAM(rollback_message);
}
if (!rollback_record) {
PHALCON_ALLOC_ZVAL_MM(rollback_record);
ZVAL_NULL(rollback_record);
}
PHALCON_INIT_VAR(manager);
phalcon_read_property(&manager, this_ptr, SL("_manager"), PH_NOISY_CC);
if (zend_is_true(manager)) {
PHALCON_ALLOC_ZVAL_MM(a0);
array_init(a0);
phalcon_array_append(&a0, manager, PH_SEPARATE TSRMLS_CC);
add_next_index_stringl(a0, SL("notifyRollback"), 1);
PHALCON_ALLOC_ZVAL_MM(a1);
array_init(a1);
phalcon_array_append(&a1, this_ptr, PH_SEPARATE TSRMLS_CC);
PHALCON_CALL_FUNC_PARAMS_2_NORETURN("call_user_func_array", a0, a1);
}
PHALCON_INIT_VAR(connection);
phalcon_read_property(&connection, this_ptr, SL("_connection"), PH_NOISY_CC);
PHALCON_INIT_VAR(success);
PHALCON_CALL_METHOD(success, connection, "rollback", PH_NO_CHECK);
if (zend_is_true(success)) {
if (!zend_is_true(rollback_message)) {
PHALCON_INIT_VAR(rollback_message);
ZVAL_STRING(rollback_message, "Transaction aborted", 1);
}
if (zend_is_true(rollback_record)) {
phalcon_update_property_zval(this_ptr, SL("_rollbackRecord"), rollback_record TSRMLS_CC);
}
PHALCON_ALLOC_ZVAL_MM(i0);
object_init_ex(i0, phalcon_mvc_model_transaction_failed_ce);
PHALCON_ALLOC_ZVAL_MM(t0);
phalcon_read_property(&t0, this_ptr, SL("_rollbackRecord"), PH_NOISY_CC);
PHALCON_CALL_METHOD_PARAMS_2_NORETURN(i0, "__construct", rollback_message, t0, PH_CHECK);
phalcon_throw_exception(i0 TSRMLS_CC);
return;
}
PHALCON_MM_RESTORE();
}
示例5: PHP_METHOD
/**
* Initialize the metadata for certain table
*
* @param Phalcon\Mvc\ModelInterface $model
* @param string $key
* @param string $table
* @param string $schema
*/
PHP_METHOD(Phalcon_Mvc_Model_MetaData, _initialize) {
zval *model, *key, *table, *schema, *strategy = NULL, *class_name;
zval *meta_data = NULL, *prefix_key = NULL, *data = NULL, *model_metadata = NULL;
zval *exception_message, *dependency_injector = NULL;
zval *key_name, *column_map = NULL, *model_column_map;
PHALCON_MM_GROW();
phalcon_fetch_params(1, 4, 0, &model, &key, &table, &schema);
PHALCON_INIT_VAR(strategy);
PHALCON_INIT_VAR(class_name);
phalcon_get_class(class_name, model, 0 TSRMLS_CC);
if (Z_TYPE_P(key) != IS_NULL) {
PHALCON_OBS_VAR(meta_data);
phalcon_read_property_this(&meta_data, this_ptr, SL("_metaData"), PH_NOISY_CC);
if (!phalcon_array_isset(meta_data, key)) {
PHALCON_INIT_VAR(prefix_key);
PHALCON_CONCAT_SV(prefix_key, "meta-", key);
/**
* The meta-data is read from the adapter always
*/
PHALCON_INIT_VAR(data);
phalcon_call_method_p1(data, this_ptr, "read", prefix_key);
if (Z_TYPE_P(data) != IS_NULL) {
if (Z_TYPE_P(meta_data) != IS_ARRAY) {
PHALCON_INIT_NVAR(meta_data);
array_init(meta_data);
}
phalcon_array_update_zval(&meta_data, key, &data, PH_COPY | PH_SEPARATE);
phalcon_update_property_this(this_ptr, SL("_metaData"), meta_data TSRMLS_CC);
} else {
/**
* Check if there is a method 'metaData' in the model to retrieve meta-data from it
*/
if (phalcon_method_exists_ex(model, SS("metadata") TSRMLS_CC) == SUCCESS) {
PHALCON_INIT_VAR(model_metadata);
phalcon_call_method(model_metadata, model, "metadata");
if (Z_TYPE_P(model_metadata) != IS_ARRAY) {
PHALCON_INIT_VAR(exception_message);
PHALCON_CONCAT_SV(exception_message, "Invalid meta-data for model ", class_name);
PHALCON_THROW_EXCEPTION_ZVAL(phalcon_mvc_model_exception_ce, exception_message);
return;
}
} else {
PHALCON_OBS_VAR(dependency_injector);
phalcon_read_property_this(&dependency_injector, this_ptr, SL("_dependencyInjector"), PH_NOISY_CC);
/**
* Get the meta-data extraction strategy
*/
phalcon_call_method(strategy, this_ptr, "getstrategy");
/**
* Get the meta-data
*/
PHALCON_INIT_NVAR(model_metadata);
phalcon_call_method_p2(model_metadata, strategy, "getmetadata", model, dependency_injector);
}
/**
* Store the meta-data locally
*/
phalcon_update_property_array(this_ptr, SL("_metaData"), key, model_metadata TSRMLS_CC);
/**
* Store the meta-data in the adapter
*/
phalcon_call_method_p2_noret(this_ptr, "write", prefix_key, model_metadata);
}
}
}
/**
* Check for a column map, store in _columnMap in order and reversed order
*/
if (!PHALCON_GLOBAL(orm).column_renaming) {
RETURN_MM_NULL();
}
PHALCON_INIT_VAR(key_name);
phalcon_fast_strtolower(key_name, class_name);
PHALCON_OBS_VAR(column_map);
phalcon_read_property_this(&column_map, this_ptr, SL("_columnMap"), PH_NOISY_CC);
if (phalcon_array_isset(column_map, key_name)) {
//.........这里部分代码省略.........
示例6: PHP_METHOD
PHP_METHOD(Phalcon_Flash, _showMessage){
zval *v0 = NULL, *v1 = NULL, *v2 = NULL, *v3 = NULL;
zval *r0 = NULL, *r1 = NULL, *r2 = NULL, *r3 = NULL, *r4 = NULL, *r5 = NULL, *r6 = NULL;
zval *c0 = NULL;
zval *t0 = NULL, *t1 = NULL;
HashTable *ah0;
HashPosition hp0;
zval **hd;
PHALCON_MM_GROW();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &v0, &v1) == FAILURE) {
PHALCON_MM_RESTORE();
RETURN_NULL();
}
if (Z_TYPE_P(v1) == IS_ARRAY) {
PHALCON_ALLOC_ZVAL_MM(r0);
PHALCON_INIT_VAR(c0);
ZVAL_STRING(c0, " ", 1);
PHALCON_CALL_FUNC_PARAMS_2(r0, "join", c0, v1, 0x00F);
PHALCON_CPY_WRT(v2, r0);
} else {
PHALCON_CPY_WRT(v2, v1);
}
if (Z_TYPE_P(v0) == IS_ARRAY) {
if (Z_TYPE_P(v0) != IS_ARRAY) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid argument supplied for foreach()");
} else {
ah0 = Z_ARRVAL_P(v0);
zend_hash_internal_pointer_reset_ex(ah0, &hp0);
fes_3b3c_0:
if(zend_hash_get_current_data_ex(ah0, (void**) &hd, &hp0) != SUCCESS){
goto fee_3b3c_0;
}
PHALCON_INIT_VAR(v3);
ZVAL_ZVAL(v3, *hd, 1, 0);
PHALCON_INIT_VAR(r3);
PHALCON_CONCAT_LEFT(r3, "<div class=\"", v2);
PHALCON_INIT_VAR(r2);
PHALCON_CONCAT_VBOTH(r2, r3, "\">", v3);
PHALCON_INIT_VAR(t0);
zend_get_constant("PHP_EOL", strlen("PHP_EOL"), t0 TSRMLS_CC);
PHALCON_INIT_VAR(r1);
PHALCON_CONCAT_VBOTH(r1, r2, "</div>", t0);
zend_print_zval(r1, 0);
zend_hash_move_forward_ex(ah0, &hp0);
goto fes_3b3c_0;
fee_3b3c_0:
if(0){ };
}
} else {
PHALCON_ALLOC_ZVAL_MM(r6);
PHALCON_CONCAT_LEFT(r6, "<div class=\"", v2);
PHALCON_ALLOC_ZVAL_MM(r5);
PHALCON_CONCAT_VBOTH(r5, r6, "\">", v0);
PHALCON_ALLOC_ZVAL_MM(t1);
zend_get_constant("PHP_EOL", strlen("PHP_EOL"), t1 TSRMLS_CC);
PHALCON_ALLOC_ZVAL_MM(r4);
PHALCON_CONCAT_VBOTH(r4, r5, "</div>", t1);
zend_print_zval(r4, 0);
}
PHALCON_MM_RESTORE();
RETURN_NULL();
}
示例7: PHP_METHOD
/**
* Executes validator
*
* @return boolean
*/
PHP_METHOD(Phalcon_Mvc_Model_Validator_Exclusionin, validate){
zval *record = NULL, *field_name = NULL, *domain = NULL, *value = NULL;
zval *c0 = NULL, *c1 = NULL, *c2 = NULL, *c3 = NULL, *c4 = NULL;
zval *r0 = NULL, *r1 = NULL, *r2 = NULL, *r3 = NULL;
PHALCON_MM_GROW();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &record) == FAILURE) {
PHALCON_MM_RESTORE();
RETURN_NULL();
}
PHALCON_INIT_VAR(c0);
ZVAL_STRING(c0, "field", 1);
PHALCON_INIT_VAR(field_name);
PHALCON_CALL_METHOD_PARAMS_1(field_name, this_ptr, "getoption", c0, PH_NO_CHECK);
if (Z_TYPE_P(field_name) != IS_STRING) {
PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Field name must be a string");
return;
}
PHALCON_INIT_VAR(c1);
ZVAL_STRING(c1, "domain", 1);
PHALCON_ALLOC_ZVAL_MM(r0);
PHALCON_CALL_METHOD_PARAMS_1(r0, this_ptr, "issetoption", c1, PH_NO_CHECK);
if (!zend_is_true(r0)) {
PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "The option 'domain' is required for this validator");
return;
}
PHALCON_INIT_VAR(c2);
ZVAL_STRING(c2, "domain", 1);
PHALCON_INIT_VAR(domain);
PHALCON_CALL_METHOD_PARAMS_1(domain, this_ptr, "getoption", c2, PH_NO_CHECK);
if (Z_TYPE_P(domain) != IS_ARRAY) {
PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_model_exception_ce, "Option 'domain' must be an array");
return;
}
PHALCON_INIT_VAR(value);
PHALCON_CALL_METHOD_PARAMS_1(value, record, "readattribute", field_name, PH_NO_CHECK);
PHALCON_ALLOC_ZVAL_MM(r1);
PHALCON_CALL_FUNC_PARAMS_2(r1, "in_array", value, domain);
if (zend_is_true(r1)) {
PHALCON_INIT_VAR(c3);
ZVAL_STRING(c3, ", ", 1);
PHALCON_ALLOC_ZVAL_MM(r2);
phalcon_fast_join(r2, c3, domain TSRMLS_CC);
PHALCON_ALLOC_ZVAL_MM(r3);
PHALCON_CONCAT_SVSV(r3, "Value of field '", field_name, "' must not be part of list: ", r2);
PHALCON_INIT_VAR(c4);
ZVAL_STRING(c4, "exclusion", 1);
PHALCON_CALL_METHOD_PARAMS_3_NORETURN(this_ptr, "appendmessage", r3, field_name, c4, PH_NO_CHECK);
PHALCON_MM_RESTORE();
RETURN_FALSE;
}
PHALCON_MM_RESTORE();
RETURN_TRUE;
}
示例8: PHP_METHOD
/**
* Generates a URL
*
* @param string|array $uri
* @return string
*/
PHP_METHOD(Phalcon_Mvc_Url, get){
zval *uri = NULL, *base_uri, *dependency_injector, *service;
zval *router, *route_name, *route, *exception_message;
zval *pattern, *paths, *processed_uri, *final_uri = NULL;
PHALCON_MM_GROW();
phalcon_fetch_params(1, 0, 1, &uri);
if (!uri) {
PHALCON_INIT_VAR(uri);
}
PHALCON_INIT_VAR(base_uri);
PHALCON_CALL_METHOD(base_uri, this_ptr, "getbaseuri");
if (Z_TYPE_P(uri) == IS_ARRAY) {
if (!phalcon_array_isset_string(uri, SS("for"))) {
PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_url_exception_ce, "It's necessary to define the route name with the parameter \"for\"");
return;
}
PHALCON_OBS_VAR(dependency_injector);
phalcon_read_property_this(&dependency_injector, this_ptr, SL("_dependencyInjector"), PH_NOISY_CC);
if (!zend_is_true(dependency_injector)) {
PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_url_exception_ce, "A dependency injector container is required to obtain the \"url\" service");
return;
}
PHALCON_INIT_VAR(service);
ZVAL_STRING(service, "router", 1);
PHALCON_INIT_VAR(router);
PHALCON_CALL_METHOD_PARAMS_1(router, dependency_injector, "getshared", service);
PHALCON_OBS_VAR(route_name);
phalcon_array_fetch_string(&route_name, uri, SL("for"), PH_NOISY_CC);
/**
* Every route is uniquely differenced by a name
*/
PHALCON_INIT_VAR(route);
PHALCON_CALL_METHOD_PARAMS_1(route, router, "getroutebyname", route_name);
if (Z_TYPE_P(route) != IS_OBJECT) {
PHALCON_INIT_VAR(exception_message);
PHALCON_CONCAT_SVS(exception_message, "Cannot obtain a route using the name \"", route_name, "\"");
PHALCON_THROW_EXCEPTION_ZVAL(phalcon_mvc_url_exception_ce, exception_message);
return;
}
PHALCON_INIT_VAR(pattern);
PHALCON_CALL_METHOD(pattern, route, "getpattern");
/**
* Return the reversed paths
*/
PHALCON_INIT_VAR(paths);
PHALCON_CALL_METHOD(paths, route, "getreversedpaths");
/**
* Replace the patterns by its variables
*/
PHALCON_INIT_VAR(processed_uri);
phalcon_replace_paths(processed_uri, pattern, paths, uri TSRMLS_CC);
PHALCON_INIT_VAR(final_uri);
PHALCON_CONCAT_VV(final_uri, base_uri, processed_uri);
RETURN_CTOR(final_uri);
}
PHALCON_INIT_NVAR(final_uri);
PHALCON_CONCAT_VV(final_uri, base_uri, uri);
RETURN_CTOR(final_uri);
}
示例9: PHP_METHOD
/**
* Phalcon\Mvc\Model\Query\Builder constructor
*
*<code>
* $params = array(
* 'models' => array('Users'),
* 'columns' => array('id', 'name', 'status'),
* 'conditions' => "created > '2013-01-01' AND created < '2014-01-01'",
* 'group' => array('id', 'name'),
* 'having' => "name = 'Kamil'",
* 'order' => array('name', 'id'),
* 'limit' => 20,
* 'offset' => 20,
*);
*$queryBuilder = new Phalcon\Mvc\Model\Query\Builder($params);
*</code>
*
* @param array $params
* @param Phalcon\DI $dependencyInjector
*/
PHP_METHOD(Phalcon_Mvc_Model_Query_Builder, __construct){
zval *params = NULL, *dependency_injector = NULL, *conditions = NULL;
zval *models, *columns, *group_clause, *joins;
zval *having_clause, *order_clause, *limit_clause;
zval *offset_clause, *for_update, *shared_lock;
PHALCON_MM_GROW();
phalcon_fetch_params(1, 0, 2, ¶ms, &dependency_injector);
if (!params) {
PHALCON_INIT_VAR(params);
}
if (!dependency_injector) {
PHALCON_INIT_VAR(dependency_injector);
}
if (Z_TYPE_P(params) == IS_ARRAY) {
/**
* Process conditions
*/
if (phalcon_array_isset_long(params, 0)) {
PHALCON_OBS_VAR(conditions);
phalcon_array_fetch_long(&conditions, params, 0, PH_NOISY);
phalcon_update_property_this(this_ptr, SL("_conditions"), conditions TSRMLS_CC);
} else {
if (phalcon_array_isset_string(params, SS("conditions"))) {
PHALCON_OBS_NVAR(conditions);
phalcon_array_fetch_string(&conditions, params, SL("conditions"), PH_NOISY);
phalcon_update_property_this(this_ptr, SL("_conditions"), conditions TSRMLS_CC);
}
}
/**
* Assign 'FROM' clause
*/
if (phalcon_array_isset_string(params, SS("models"))) {
PHALCON_OBS_VAR(models);
phalcon_array_fetch_string(&models, params, SL("models"), PH_NOISY);
phalcon_update_property_this(this_ptr, SL("_models"), models TSRMLS_CC);
}
/**
* Assign COLUMNS clause
*/
if (phalcon_array_isset_string(params, SS("columns"))) {
PHALCON_OBS_VAR(columns);
phalcon_array_fetch_string(&columns, params, SL("columns"), PH_NOISY);
phalcon_update_property_this(this_ptr, SL("_columns"), columns TSRMLS_CC);
}
/**
* Assign JOIN clause
*/
if (phalcon_array_isset_string(params, SS("joins"))) {
PHALCON_OBS_VAR(joins);
phalcon_array_fetch_string(&joins, params, SL("joins"), PH_NOISY);
phalcon_update_property_this(this_ptr, SL("_joins"), joins TSRMLS_CC);
}
/**
* Assign GROUP clause
*/
if (phalcon_array_isset_string(params, SS("group"))) {
PHALCON_OBS_VAR(group_clause);
phalcon_array_fetch_string(&group_clause, params, SL("group"), PH_NOISY);
phalcon_update_property_this(this_ptr, SL("_group"), group_clause TSRMLS_CC);
}
/**
* Assign HAVING clause
*/
if (phalcon_array_isset_string(params, SS("having"))) {
PHALCON_OBS_VAR(having_clause);
phalcon_array_fetch_string(&having_clause, params, SL("having"), PH_NOISY);
phalcon_update_property_this(this_ptr, SL("_having"), having_clause TSRMLS_CC);
}
//.........这里部分代码省略.........
示例10: PHP_METHOD
/**
* Commits the internal transaction
*
*/
PHP_METHOD(Phalcon_Logger_Adapter_File, commit){
zval *transaction = NULL, *file_handler = NULL, *quenue = NULL, *message = NULL;
zval *message_str = NULL, *type = NULL, *time = NULL, *applied_format = NULL;
zval *applied_eol = NULL;
zval *t0 = NULL;
HashTable *ah0;
HashPosition hp0;
zval **hd;
PHALCON_MM_GROW();
PHALCON_INIT_VAR(transaction);
phalcon_read_property(&transaction, this_ptr, SL("_transaction"), PH_NOISY_CC);
if (!zend_is_true(transaction)) {
PHALCON_THROW_EXCEPTION_STR(phalcon_logger_exception_ce, "There is no active transaction");
return;
}
phalcon_update_property_bool(this_ptr, SL("_transaction"), 0 TSRMLS_CC);
PHALCON_INIT_VAR(file_handler);
phalcon_read_property(&file_handler, this_ptr, SL("_fileHandler"), PH_NOISY_CC);
PHALCON_INIT_VAR(quenue);
phalcon_read_property(&quenue, this_ptr, SL("_quenue"), PH_NOISY_CC);
if (!phalcon_valid_foreach(quenue TSRMLS_CC)) {
return;
}
ah0 = Z_ARRVAL_P(quenue);
zend_hash_internal_pointer_reset_ex(ah0, &hp0);
fes_654f_1:
if(zend_hash_get_current_data_ex(ah0, (void**) &hd, &hp0) != SUCCESS){
goto fee_654f_1;
}
PHALCON_INIT_VAR(message);
ZVAL_ZVAL(message, *hd, 1, 0);
PHALCON_INIT_VAR(message_str);
PHALCON_CALL_METHOD(message_str, message, "getmessage", PH_NO_CHECK);
PHALCON_INIT_VAR(type);
PHALCON_CALL_METHOD(type, message, "gettype", PH_NO_CHECK);
PHALCON_INIT_VAR(time);
PHALCON_CALL_METHOD(time, message, "gettime", PH_NO_CHECK);
PHALCON_INIT_VAR(applied_format);
PHALCON_CALL_METHOD_PARAMS_3(applied_format, this_ptr, "_applyformat", message_str, type, time, PH_NO_CHECK);
PHALCON_INIT_VAR(t0);
zend_get_constant(SL("PHP_EOL"), t0 TSRMLS_CC);
PHALCON_INIT_VAR(applied_eol);
PHALCON_CONCAT_VV(applied_eol, applied_format, t0);
PHALCON_CALL_FUNC_PARAMS_2_NORETURN("fputs", file_handler, applied_eol);
zend_hash_move_forward_ex(ah0, &hp0);
goto fes_654f_1;
fee_654f_1:
if(0){}
PHALCON_MM_RESTORE();
}
示例11: PHP_METHOD
/**
* Returns a cached content
*
* @param string $keyName
* @return mixed
*/
PHP_METHOD(Phalcon_Cache_Backend_File, get){
zval *key_name = NULL, *backend = NULL, *front_end = NULL, *sanitize_key = NULL;
zval *cache_file = NULL, *time = NULL, *lifetime = NULL, *cached_content = NULL;
zval *t0 = NULL, *t1 = NULL;
zval *r0 = NULL, *r1 = NULL, *r2 = NULL, *r3 = NULL, *r4 = NULL, *r5 = NULL, *r6 = NULL;
zval *r7 = NULL, *r8 = NULL, *r9 = NULL;
PHALCON_MM_GROW();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &key_name) == FAILURE) {
PHALCON_MM_RESTORE();
RETURN_NULL();
}
PHALCON_ALLOC_ZVAL_MM(t0);
phalcon_read_property(&t0, this_ptr, "_backendOptions", sizeof("_backendOptions")-1, PHALCON_NOISY TSRMLS_CC);
PHALCON_CPY_WRT(backend, t0);
PHALCON_ALLOC_ZVAL_MM(t1);
phalcon_read_property(&t1, this_ptr, "_frontendObject", sizeof("_frontendObject")-1, PHALCON_NOISY TSRMLS_CC);
PHALCON_CPY_WRT(front_end, t1);
PHALCON_ALLOC_ZVAL_MM(r0);
phalcon_filter_alphanum(r0, key_name);
PHALCON_CPY_WRT(sanitize_key, r0);
phalcon_update_property_zval(this_ptr, "_lastKey", strlen("_lastKey"), sanitize_key TSRMLS_CC);
PHALCON_ALLOC_ZVAL_MM(r1);
phalcon_array_fetch_string(&r1, backend, "cacheDir", strlen("cacheDir"), PHALCON_NOISY TSRMLS_CC);
PHALCON_ALLOC_ZVAL_MM(r2);
concat_function(r2, r1, sanitize_key TSRMLS_CC);
PHALCON_CPY_WRT(cache_file, r2);
if (phalcon_file_exists(cache_file TSRMLS_CC) == SUCCESS) {
PHALCON_ALLOC_ZVAL_MM(r3);
PHALCON_CALL_FUNC(r3, "time", 0x018);
PHALCON_CPY_WRT(time, r3);
PHALCON_ALLOC_ZVAL_MM(r4);
PHALCON_CALL_METHOD(r4, front_end, "getlifetime", PHALCON_NO_CHECK);
PHALCON_CPY_WRT(lifetime, r4);
PHALCON_ALLOC_ZVAL_MM(r5);
sub_function(r5, time, lifetime TSRMLS_CC);
PHALCON_ALLOC_ZVAL_MM(r6);
PHALCON_CALL_FUNC_PARAMS_1(r6, "filemtime", cache_file, 0x019);
PHALCON_INIT_VAR(r7);
is_smaller_function(r7, r5, r6 TSRMLS_CC);
if (zend_is_true(r7)) {
PHALCON_ALLOC_ZVAL_MM(r8);
PHALCON_CALL_FUNC_PARAMS_1(r8, "file_get_contents", cache_file, 0x01A);
PHALCON_CPY_WRT(cached_content, r8);
PHALCON_ALLOC_ZVAL_MM(r9);
PHALCON_CALL_METHOD_PARAMS_1(r9, front_end, "afterretrieve", cached_content, PHALCON_NO_CHECK);
PHALCON_RETURN_DZVAL(r9);
}
}
PHALCON_MM_RESTORE();
RETURN_NULL();
}
示例12: PHP_METHOD
/**
* Gets information about schema, host and port used by the request
*
* @return string
*/
PHP_METHOD(Phalcon_Http_Request, getHttpHost){
zval *scheme, *server_name, *name, *server_port;
zval *port, *http, *standard_port, *is_std_name;
zval *is_std_port, *is_std_http, *https, *secure_port;
zval *is_secure_scheme, *is_secure_port, *is_secure_http;
zval *name_port;
PHALCON_MM_GROW();
PHALCON_INIT_VAR(scheme);
PHALCON_CALL_METHOD(scheme, this_ptr, "getscheme");
/**
* Get the server name from _SERVER['SERVER_NAME']
*/
PHALCON_INIT_VAR(server_name);
ZVAL_STRING(server_name, "SERVER_NAME", 1);
PHALCON_INIT_VAR(name);
PHALCON_CALL_METHOD_PARAMS_1(name, this_ptr, "getserver", server_name);
/**
* Get the server port from _SERVER['SERVER_PORT']
*/
PHALCON_INIT_VAR(server_port);
ZVAL_STRING(server_port, "SERVER_PORT", 1);
PHALCON_INIT_VAR(port);
PHALCON_CALL_METHOD_PARAMS_1(port, this_ptr, "getserver", server_port);
PHALCON_INIT_VAR(http);
ZVAL_STRING(http, "http", 1);
PHALCON_INIT_VAR(standard_port);
ZVAL_LONG(standard_port, 80);
/**
* Check if the request is a standard http
*/
PHALCON_INIT_VAR(is_std_name);
is_equal_function(is_std_name, scheme, http TSRMLS_CC);
PHALCON_INIT_VAR(is_std_port);
is_equal_function(is_std_port, port, standard_port TSRMLS_CC);
PHALCON_INIT_VAR(is_std_http);
phalcon_and_function(is_std_http, is_std_name, is_std_port);
PHALCON_INIT_VAR(https);
ZVAL_STRING(https, "https", 1);
PHALCON_INIT_VAR(secure_port);
ZVAL_LONG(secure_port, 443);
/**
* Check if the request is a secure http request
*/
PHALCON_INIT_VAR(is_secure_scheme);
is_equal_function(is_secure_scheme, scheme, https TSRMLS_CC);
PHALCON_INIT_VAR(is_secure_port);
is_equal_function(is_secure_port, port, secure_port TSRMLS_CC);
PHALCON_INIT_VAR(is_secure_http);
phalcon_and_function(is_secure_http, is_secure_scheme, is_secure_port);
/**
* If is standard http we return the server name only
*/
if (PHALCON_IS_TRUE(is_std_http)) {
RETURN_CCTOR(name);
}
/**
* If is standard secure http we return the server name only
*/
if (PHALCON_IS_TRUE(is_secure_http)) {
RETURN_CCTOR(name);
}
PHALCON_INIT_VAR(name_port);
PHALCON_CONCAT_VSV(name_port, name, ":", port);
RETURN_CTOR(name_port);
}
示例13: PHP_METHOD
/**
* Fires a event in the events manager causing that the acive listeners will be notified about it
*
* @param string $eventType
* @param object $source
* @param mixed $data
* @return mixed
*/
PHP_METHOD(Phalcon_Events_Manager, fire){
zval *event_type, *source, *data = NULL, *events, *exception_message;
zval *colon, *event_parts, *type, *event_name, *status = NULL;
zval *fire_events = NULL, *handler = NULL, *event = NULL, *arguments = NULL;
HashTable *ah0, *ah1;
HashPosition hp0, hp1;
zval **hd;
int eval_int;
PHALCON_MM_GROW();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz|z", &event_type, &source, &data) == FAILURE) {
PHALCON_MM_RESTORE();
RETURN_NULL();
}
if (!data) {
PHALCON_INIT_NVAR(data);
}
if (Z_TYPE_P(event_type) != IS_STRING) {
PHALCON_THROW_EXCEPTION_STR(phalcon_events_exception_ce, "Event type must be a string");
return;
}
PHALCON_INIT_VAR(events);
phalcon_read_property(&events, this_ptr, SL("_events"), PH_NOISY_CC);
if (Z_TYPE_P(events) != IS_ARRAY) {
PHALCON_MM_RESTORE();
RETURN_NULL();
}
if (!phalcon_memnstr_str(event_type, SL(":") TSRMLS_CC)) {
PHALCON_INIT_VAR(exception_message);
PHALCON_CONCAT_SV(exception_message, "Invalid event type ", event_type);
PHALCON_THROW_EXCEPTION_ZVAL(phalcon_events_exception_ce, exception_message);
return;
}
PHALCON_INIT_VAR(colon);
ZVAL_STRING(colon, ":", 1);
PHALCON_INIT_VAR(event_parts);
phalcon_fast_explode(event_parts, colon, event_type TSRMLS_CC);
PHALCON_INIT_VAR(type);
phalcon_array_fetch_long(&type, event_parts, 0, PH_NOISY_CC);
PHALCON_INIT_VAR(event_name);
phalcon_array_fetch_long(&event_name, event_parts, 1, PH_NOISY_CC);
PHALCON_INIT_VAR(status);
eval_int = phalcon_array_isset(events, type);
if (eval_int) {
PHALCON_INIT_VAR(fire_events);
phalcon_array_fetch(&fire_events, events, type, PH_NOISY_CC);
if (Z_TYPE_P(fire_events) == IS_ARRAY) {
if (!phalcon_valid_foreach(fire_events TSRMLS_CC)) {
return;
}
ah0 = Z_ARRVAL_P(fire_events);
zend_hash_internal_pointer_reset_ex(ah0, &hp0);
ph_cycle_start_0:
if (zend_hash_get_current_data_ex(ah0, (void**) &hd, &hp0) != SUCCESS) {
goto ph_cycle_end_0;
}
PHALCON_GET_FOREACH_VALUE(handler);
if (Z_TYPE_P(handler) == IS_OBJECT) {
if (phalcon_is_instance_of(handler, SL("Closure") TSRMLS_CC)) {
PHALCON_INIT_NVAR(event);
object_init_ex(event, phalcon_events_event_ce);
PHALCON_CALL_METHOD_PARAMS_3_NORETURN(event, "__construct", event_name, source, data, PH_CHECK);
PHALCON_INIT_NVAR(arguments);
array_init(arguments);
phalcon_array_append(&arguments, event, PH_SEPARATE TSRMLS_CC);
phalcon_array_append(&arguments, source, PH_SEPARATE TSRMLS_CC);
phalcon_array_append(&arguments, data, PH_SEPARATE TSRMLS_CC);
PHALCON_INIT_NVAR(status);
PHALCON_CALL_USER_FUNC_ARRAY(status, handler, arguments);
} else {
if (phalcon_method_exists(handler, event_name TSRMLS_CC) == SUCCESS) {
PHALCON_INIT_NVAR(event);
object_init_ex(event, phalcon_events_event_ce);
//.........这里部分代码省略.........
示例14: PHP_METHOD
/**
* Restores the internal state of a Phalcon\Db\Column object
*
* @param array $data
* @return \Phalcon\Db\Column
*/
PHP_METHOD(Phalcon_Db_Column, __set_state){
zval *data, *definition, *column_name, *column_type = NULL;
zval *not_null, *primary, *size, *scale, *dunsigned, *after;
zval *is_numeric, *first, *bind_type, *default_value;
PHALCON_MM_GROW();
phalcon_fetch_params(1, 1, 0, &data);
if (Z_TYPE_P(data) != IS_ARRAY) {
PHALCON_THROW_EXCEPTION_STR(phalcon_db_exception_ce, "Column state must be an array");
return;
}
if (!phalcon_array_isset_string_fetch(&column_name, data, SS("_columnName"))) {
PHALCON_THROW_EXCEPTION_STR(phalcon_db_exception_ce, "Column name is required");
return;
}
PHALCON_INIT_VAR(definition);
array_init(definition);
if (phalcon_array_isset_string_fetch(&column_type, data, SS("_type"))) {
phalcon_array_update_string(&definition, SL("type"), column_type, PH_COPY);
}
if (phalcon_array_isset_string_fetch(¬_null, data, SS("_notNull"))) {
phalcon_array_update_string(&definition, SL("notNull"), not_null, PH_COPY);
}
if (phalcon_array_isset_string_fetch(&primary, data, SS("_primary"))) {
phalcon_array_update_string(&definition, SL("primary"), primary, PH_COPY);
}
if (phalcon_array_isset_string_fetch(&size, data, SS("_size"))) {
phalcon_array_update_string(&definition, SL("size"), size, PH_COPY);
}
if (phalcon_array_isset_string_fetch(&scale, data, SS("_scale"))) {
phalcon_array_update_string(&definition, SL("scale"), scale, PH_COPY);
}
if (phalcon_array_isset_string_fetch(&dunsigned, data, SS("_unsigned"))) {
phalcon_array_update_string(&definition, SL("unsigned"), dunsigned, PH_COPY);
}
if (phalcon_array_isset_string_fetch(&after, data, SS("_after"))) {
phalcon_array_update_string(&definition, SL("after"), after, PH_COPY);
}
if (phalcon_array_isset_string_fetch(&is_numeric, data, SS("_isNumeric"))) {
phalcon_array_update_string(&definition, SL("isNumeric"), is_numeric, PH_COPY);
}
if (phalcon_array_isset_string_fetch(&first, data, SS("_first"))) {
phalcon_array_update_string(&definition, SL("first"), first, PH_COPY);
}
if (phalcon_array_isset_string_fetch(&bind_type, data, SS("_bindType"))) {
phalcon_array_update_string(&definition, SL("bindType"), bind_type, PH_COPY);
}
if (phalcon_array_isset_string_fetch(&default_value, data, SS("_default"))) {
phalcon_array_update_string(&definition, SL("default"), default_value, PH_COPY);
}
object_init_ex(return_value, phalcon_db_column_ce);
PHALCON_CALL_METHOD(NULL, return_value, "__construct", column_name, definition);
RETURN_MM();
}
示例15: PHP_METHOD
/**
* Gets number of rows returned by a resulset
*
*<code>
* $result = $connection->query("SELECT * FROM robots ORDER BY name");
* echo 'There are ', $result->numRows(), ' rows in the resulset';
*</code>
*
* @return int
*/
PHP_METHOD(Phalcon_Db_Result_Pdo, numRows){
zval *row_count = NULL, *connection, *type = NULL, *pdo_statement = NULL;
zval *sql_statement, *bind_params, *bind_types;
zval *matches, *pattern, *match, *else_clauses;
zval *sql, *result = NULL, *row = NULL;
PHALCON_MM_GROW();
PHALCON_OBS_VAR(row_count);
phalcon_read_property_this(&row_count, this_ptr, SL("_rowCount"), PH_NOISY TSRMLS_CC);
if (PHALCON_IS_FALSE(row_count)) {
PHALCON_OBS_VAR(connection);
phalcon_read_property_this(&connection, this_ptr, SL("_connection"), PH_NOISY TSRMLS_CC);
PHALCON_CALL_METHOD(&type, connection, "gettype");
/**
* MySQL/PostgreSQL library property returns the number of records
*/
if (PHALCON_IS_STRING(type, "mysql") || PHALCON_IS_STRING(type, "pgsql")) {
PHALCON_OBS_VAR(pdo_statement);
phalcon_read_property_this(&pdo_statement, this_ptr, SL("_pdoStatement"), PH_NOISY TSRMLS_CC);
PHALCON_CALL_METHOD(&row_count, pdo_statement, "rowcount");
}
/**
* We should get the count using a new statement :(
*/
if (PHALCON_IS_FALSE(row_count)) {
/**
* SQLite/Oracle/SQLServer returns resultsets that to the client eyes (PDO) has an
* arbitrary number of rows, so we need to perform an extra count to know that
*/
PHALCON_OBS_VAR(sql_statement);
phalcon_read_property_this(&sql_statement, this_ptr, SL("_sqlStatement"), PH_NOISY TSRMLS_CC);
/**
* If the sql_statement starts with SELECT COUNT(*) we don't make the count
*/
if (!phalcon_start_with_str(sql_statement, SL("SELECT COUNT(*) "))) {
PHALCON_OBS_VAR(bind_params);
phalcon_read_property_this(&bind_params, this_ptr, SL("_bindParams"), PH_NOISY TSRMLS_CC);
PHALCON_OBS_VAR(bind_types);
phalcon_read_property_this(&bind_types, this_ptr, SL("_bindTypes"), PH_NOISY TSRMLS_CC);
PHALCON_INIT_VAR(matches);
PHALCON_INIT_VAR(pattern);
ZVAL_STRING(pattern, "/^SELECT\\s+(.*)$/i", 1);
PHALCON_INIT_VAR(match);
RETURN_MM_ON_FAILURE(phalcon_preg_match(match, pattern, sql_statement, matches TSRMLS_CC));
if (zend_is_true(match)) {
PHALCON_OBS_VAR(else_clauses);
phalcon_array_fetch_long(&else_clauses, matches, 1, PH_NOISY);
PHALCON_INIT_VAR(sql);
PHALCON_CONCAT_SVS(sql, "SELECT COUNT(*) \"numrows\" FROM (SELECT ", else_clauses, ")");
PHALCON_CALL_METHOD(&result, connection, "query", sql, bind_params, bind_types);
PHALCON_CALL_METHOD(&row, result, "fetch");
PHALCON_OBS_NVAR(row_count);
phalcon_array_fetch_string(&row_count, row, SL("numrows"), PH_NOISY);
}
} else {
PHALCON_INIT_NVAR(row_count);
ZVAL_LONG(row_count, 1);
}
}
/**
* Update the value to avoid further calculations
*/
phalcon_update_property_this(this_ptr, SL("_rowCount"), row_count TSRMLS_CC);
}
RETURN_CCTOR(row_count);
}