/** * Registers a set of PSR-0 directories for a given prefix, * replacing any others previously set for this prefix. * * @param string $prefix The prefix * @param array|string $paths The PSR-0 base directories */ PHP_METHOD(Xpl_ClassLoader, set) { zval *prefix, *paths = NULL, _0$$4, _1$$4, *_2$$4; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 0, &prefix, &paths); ZEPHIR_SEPARATE_PARAM(paths); if (Z_TYPE_P(paths) == IS_STRING) { ZEPHIR_INIT_NVAR(paths); zephir_create_array(paths, 1, 0 TSRMLS_CC); zephir_array_fast_append(paths, paths); } if (Z_TYPE_P(prefix) == IS_STRING) { ZEPHIR_SINIT_VAR(_0$$4); ZVAL_LONG(&_0$$4, 0); ZEPHIR_SINIT_VAR(_1$$4); ZVAL_LONG(&_1$$4, 1); ZEPHIR_INIT_VAR(_2$$4); zephir_substr(_2$$4, prefix, 0 , 1 , 0); zephir_update_property_array_multi(this_ptr, SL("prefixesPsr0"), &paths TSRMLS_CC, SL("zz"), 2, _2$$4, prefix); } else { zephir_update_property_this(this_ptr, SL("fallbackDirsPsr0"), paths TSRMLS_CC); } ZEPHIR_MM_RESTORE(); }
/** * Adds an event listener which will be the only one called for the event. * * @param string event Event ID. * @param callable call Callable to execute on event trigger. * @return \Xpl\Event\Manager */ PHP_METHOD(Xpl_Event_Manager, one) { int ZEPHIR_LAST_CALL_STATUS; zval *event, *call, *_0, *_2, *_3, *_1$$3; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 0, &event, &call); _0 = zephir_fetch_nproperty_this(this_ptr, SL("listeners"), PH_NOISY_CC); if (!(zephir_array_isset(_0, event))) { ZEPHIR_INIT_VAR(_1$$3); array_init(_1$$3); zephir_update_property_array(this_ptr, SL("listeners"), event, _1$$3 TSRMLS_CC); } ZEPHIR_INIT_VAR(_2); object_init_ex(_2, xpl_event_listener_ce); ZEPHIR_INIT_VAR(_3); ZVAL_LONG(_3, 1); ZEPHIR_CALL_METHOD(NULL, _2, "__construct", NULL, 102, event, call, _3); zephir_check_call_status(); zephir_update_property_array_multi(this_ptr, SL("listeners"), &_2 TSRMLS_CC, SL("zs"), 3, event, SL("one")); RETURN_THIS(); }
/** * Writes meta-data for certain model using a MODEL_* constant * *<code> * print_r( * $metaData->writeColumnMapIndex( * new Robots(), * MetaData::MODELS_REVERSE_COLUMN_MAP, * [ * "leName" => "name", * ] * ) * ); *</code> */ PHP_METHOD(Phalcon_Mvc_Model_MetaData, writeMetaDataIndex) { zend_bool _0, _1; zend_long index, ZEPHIR_LAST_CALL_STATUS; zval *model, model_sub, *index_param = NULL, *data, data_sub, source, schema, key, _2, _3; zval *this_ptr = getThis(); ZVAL_UNDEF(&model_sub); ZVAL_UNDEF(&data_sub); ZVAL_UNDEF(&source); ZVAL_UNDEF(&schema); ZVAL_UNDEF(&key); ZVAL_UNDEF(&_2); ZVAL_UNDEF(&_3); ZEPHIR_MM_GROW(); zephir_fetch_params(1, 3, 0, &model, &index_param, &data); index = zephir_get_intval(index_param); _0 = Z_TYPE_P(data) != IS_ARRAY; if (_0) { _0 = Z_TYPE_P(data) != IS_STRING; } _1 = _0; if (_1) { _1 = ((Z_TYPE_P(data) == IS_TRUE || Z_TYPE_P(data) == IS_FALSE) != 1); } if (_1) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Invalid data for index", "phalcon/mvc/model/metadata.zep", 299); return; } ZEPHIR_CALL_METHOD(&source, model, "getsource", NULL, 0); zephir_check_call_status(); ZEPHIR_CALL_METHOD(&schema, model, "getschema", NULL, 0); zephir_check_call_status(); ZEPHIR_INIT_VAR(&_2); zephir_get_class(&_2, model, 1 TSRMLS_CC); ZEPHIR_INIT_VAR(&key); ZEPHIR_CONCAT_VSVV(&key, &_2, "-", &schema, &source); zephir_read_property(&_3, this_ptr, SL("_metaData"), PH_NOISY_CC | PH_READONLY); if (!(zephir_array_isset(&_3, &key))) { ZEPHIR_CALL_METHOD(NULL, this_ptr, "_initialize", NULL, 5, model, &key, &source, &schema); zephir_check_call_status(); } zephir_update_property_array_multi(this_ptr, SL("_metaData"), data TSRMLS_CC, SL("zl"), 2, &key, index); ZEPHIR_MM_RESTORE(); }
/** * Writes meta-data for certain model using a MODEL_* constant * *<code> * print_r( * $metaData->writeColumnMapIndex( * new Robots(), * MetaData::MODELS_REVERSE_COLUMN_MAP, * [ * "leName" => "name", * ] * ) * ); *</code> */ PHP_METHOD(Phalcon_Mvc_Model_MetaData, writeMetaDataIndex) { zend_bool _0, _1; int index, ZEPHIR_LAST_CALL_STATUS; zval *model, *index_param = NULL, *data, *source = NULL, *schema = NULL, *key = NULL, *_2, *_3; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 3, 0, &model, &index_param, &data); index = zephir_get_intval(index_param); _0 = Z_TYPE_P(data) != IS_ARRAY; if (_0) { _0 = Z_TYPE_P(data) != IS_STRING; } _1 = _0; if (_1) { _1 = Z_TYPE_P(data) != IS_BOOL; } if (_1) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Invalid data for index", "phalcon/mvc/model/metadata.zep", 308); return; } ZEPHIR_CALL_METHOD(&source, model, "getsource", NULL, 0); zephir_check_call_status(); ZEPHIR_CALL_METHOD(&schema, model, "getschema", NULL, 0); zephir_check_call_status(); ZEPHIR_INIT_VAR(_2); zephir_get_class(_2, model, 1 TSRMLS_CC); ZEPHIR_INIT_VAR(key); ZEPHIR_CONCAT_VSVV(key, _2, "-", schema, source); _3 = zephir_fetch_nproperty_this(this_ptr, SL("_metaData"), PH_NOISY_CC); if (!(zephir_array_isset(_3, key))) { ZEPHIR_CALL_METHOD(NULL, this_ptr, "_initialize", NULL, 10, model, key, source, schema); zephir_check_call_status(); } zephir_update_property_array_multi(this_ptr, SL("_metaData"), &data TSRMLS_CC, SL("zl"), 2, key, index); ZEPHIR_MM_RESTORE(); }
/** * Registers a set of PSR-4 directories for a given namespace, * replacing any others previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing "\\" * @param array|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException */ PHP_METHOD(Xpl_ClassLoader, setPsr4) { zval *prefix, *paths = NULL, *_0$$4, _1$$4, _2$$4, *_3$$4; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 0, &prefix, &paths); ZEPHIR_SEPARATE_PARAM(paths); if (Z_TYPE_P(paths) == IS_STRING) { ZEPHIR_INIT_NVAR(paths); zephir_create_array(paths, 1, 0 TSRMLS_CC); zephir_array_fast_append(paths, paths); } if (Z_TYPE_P(prefix) == IS_STRING) { if (!(zephir_end_with_str(prefix, SL("\\")))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(spl_ce_InvalidArgumentException, "A non-empty PSR-4 prefix must end with a namespace separator.", "xpl/classloader.zep", 366); return; } ZEPHIR_INIT_VAR(_0$$4); ZVAL_LONG(_0$$4, zephir_fast_strlen_ev(prefix)); ZEPHIR_SINIT_VAR(_1$$4); ZVAL_LONG(&_1$$4, 0); ZEPHIR_SINIT_VAR(_2$$4); ZVAL_LONG(&_2$$4, 1); ZEPHIR_INIT_VAR(_3$$4); zephir_substr(_3$$4, prefix, 0 , 1 , 0); zephir_update_property_array_multi(this_ptr, SL("prefixLengthsPsr4"), &_0$$4 TSRMLS_CC, SL("zz"), 2, _3$$4, prefix); zephir_update_property_array(this_ptr, SL("prefixDirsPsr4"), prefix, paths TSRMLS_CC); } else { zephir_update_property_this(this_ptr, SL("fallbackDirsPsr4"), paths TSRMLS_CC); } ZEPHIR_MM_RESTORE(); }
/** * Do a role inherit from another existing role */ PHP_METHOD(Phalcon_Acl_Adapter_Memory, addInherit) { zephir_fcall_cache_entry *_8 = NULL; HashTable *_6; HashPosition _5; int ZEPHIR_LAST_CALL_STATUS; zval *roleName_param = NULL, *roleToInherit, *roleInheritName = NULL, *rolesNames, *deepInheritName = NULL, *_0 = NULL, *_2, *_3, *_4, **_7, *_9; zval *roleName = NULL, *_1; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 0, &roleName_param, &roleToInherit); zephir_get_strval(roleName, roleName_param); ZEPHIR_OBS_VAR(rolesNames); zephir_read_property_this(&rolesNames, this_ptr, SL("_rolesNames"), PH_NOISY_CC); if (!(zephir_array_isset(rolesNames, roleName))) { ZEPHIR_INIT_VAR(_0); object_init_ex(_0, phalcon_acl_exception_ce); ZEPHIR_INIT_VAR(_1); ZEPHIR_CONCAT_SVS(_1, "Role '", roleName, "' does not exist in the role list"); ZEPHIR_CALL_METHOD(NULL, _0, "__construct", NULL, 9, _1); zephir_check_call_status(); zephir_throw_exception_debug(_0, "phalcon/acl/adapter/memory.zep", 194 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } if (Z_TYPE_P(roleToInherit) == IS_OBJECT) { ZEPHIR_CALL_METHOD(&roleInheritName, roleToInherit, "getname", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(roleInheritName, roleToInherit); } _2 = zephir_fetch_nproperty_this(this_ptr, SL("_roleInherits"), PH_NOISY_CC); if (zephir_array_isset(_2, roleInheritName)) { _3 = zephir_fetch_nproperty_this(this_ptr, SL("_roleInherits"), PH_NOISY_CC); zephir_array_fetch(&_4, _3, roleInheritName, PH_NOISY | PH_READONLY, "phalcon/acl/adapter/memory.zep", 207 TSRMLS_CC); zephir_is_iterable(_4, &_6, &_5, 0, 0, "phalcon/acl/adapter/memory.zep", 210); for ( ; zephir_hash_get_current_data_ex(_6, (void**) &_7, &_5) == SUCCESS ; zephir_hash_move_forward_ex(_6, &_5) ) { ZEPHIR_GET_HVALUE(deepInheritName, _7); ZEPHIR_CALL_METHOD(NULL, this_ptr, "addinherit", &_8, 80, roleName, deepInheritName); zephir_check_call_status(); } } if (!(zephir_array_isset(rolesNames, roleInheritName))) { ZEPHIR_INIT_NVAR(_0); object_init_ex(_0, phalcon_acl_exception_ce); ZEPHIR_INIT_VAR(_9); ZEPHIR_CONCAT_SVS(_9, "Role '", roleInheritName, "' (to inherit) does not exist in the role list"); ZEPHIR_CALL_METHOD(NULL, _0, "__construct", NULL, 9, _9); zephir_check_call_status(); zephir_throw_exception_debug(_0, "phalcon/acl/adapter/memory.zep", 216 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } if (ZEPHIR_IS_EQUAL(roleName, roleInheritName)) { RETURN_MM_BOOL(0); } _3 = zephir_fetch_nproperty_this(this_ptr, SL("_roleInherits"), PH_NOISY_CC); if (!(zephir_array_isset(_3, roleName))) { zephir_update_property_array(this_ptr, SL("_roleInherits"), roleName, ZEPHIR_GLOBAL(global_true) TSRMLS_CC); } zephir_update_property_array_multi(this_ptr, SL("_roleInherits"), &roleInheritName TSRMLS_CC, SL("za"), 2, roleName); RETURN_MM_BOOL(1); }
/** * Registers a set of PSR-4 directories for a given namespace, either * appending or prepending to the ones previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing "\\" * @param array|string $paths The PSR-0 base directories * @param bool $prepend Whether to prepend the directories * @throws \InvalidArgumentException */ PHP_METHOD(Xpl_ClassLoader, addPsr4) { zend_bool prepend; zval *prefix, *paths = NULL, *prepend_param = NULL, *firstChar = NULL, *prefixDirs = NULL, *_4, *_0$$5, *_1$$5, *_2$$6, *_3$$6, _5$$7, _6$$7, *_7$$7, *_8$$10, *_9$$11; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 1, &prefix, &paths, &prepend_param); ZEPHIR_SEPARATE_PARAM(paths); if (!prepend_param) { prepend = 0; } else { prepend = zephir_get_boolval(prepend_param); } if (Z_TYPE_P(paths) == IS_STRING) { ZEPHIR_INIT_NVAR(paths); zephir_create_array(paths, 1, 0 TSRMLS_CC); zephir_array_fast_append(paths, paths); } if (Z_TYPE_P(prefix) != IS_STRING) { if (prepend) { ZEPHIR_INIT_VAR(_0$$5); _1$$5 = zephir_fetch_nproperty_this(this_ptr, SL("fallbackDirsPsr4"), PH_NOISY_CC); zephir_fast_array_merge(_0$$5, &(paths), &(_1$$5) TSRMLS_CC); zephir_update_property_this(this_ptr, SL("fallbackDirsPsr4"), _0$$5 TSRMLS_CC); } else { ZEPHIR_INIT_VAR(_2$$6); _3$$6 = zephir_fetch_nproperty_this(this_ptr, SL("fallbackDirsPsr4"), PH_NOISY_CC); zephir_fast_array_merge(_2$$6, &(_3$$6), &(paths) TSRMLS_CC); zephir_update_property_this(this_ptr, SL("fallbackDirsPsr4"), _2$$6 TSRMLS_CC); } RETURN_MM_NULL(); } ZEPHIR_OBS_VAR(prefixDirs); _4 = zephir_fetch_nproperty_this(this_ptr, SL("prefixDirsPsr4"), PH_NOISY_CC); if (!(zephir_array_isset_fetch(&prefixDirs, _4, prefix, 0 TSRMLS_CC))) { ZEPHIR_SINIT_VAR(_5$$7); ZVAL_LONG(&_5$$7, 0); ZEPHIR_SINIT_VAR(_6$$7); ZVAL_LONG(&_6$$7, 1); ZEPHIR_INIT_VAR(firstChar); zephir_substr(firstChar, prefix, 0 , 1 , 0); if (!(zephir_end_with_str(prefix, SL("\\")))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(spl_ce_InvalidArgumentException, "A non-empty PSR-4 prefix must end with a namespace separator.", "xpl/classloader.zep", 310); return; } ZEPHIR_INIT_VAR(_7$$7); ZVAL_LONG(_7$$7, zephir_fast_strlen_ev(prefix)); zephir_update_property_array_multi(this_ptr, SL("prefixLengthsPsr4"), &_7$$7 TSRMLS_CC, SL("zz"), 2, firstChar, prefix); zephir_update_property_array(this_ptr, SL("prefixDirsPsr4"), prefix, paths TSRMLS_CC); } else { if (prepend) { ZEPHIR_INIT_VAR(_8$$10); zephir_fast_array_merge(_8$$10, &(paths), &(prefixDirs) TSRMLS_CC); zephir_update_property_array(this_ptr, SL("prefixDirsPsr4"), prefix, _8$$10 TSRMLS_CC); } else { ZEPHIR_INIT_VAR(_9$$11); zephir_fast_array_merge(_9$$11, &(prefixDirs), &(paths) TSRMLS_CC); zephir_update_property_array(this_ptr, SL("prefixDirsPsr4"), prefix, _9$$11 TSRMLS_CC); } } ZEPHIR_MM_RESTORE(); }
/** * Registers a set of PSR-0 directories for a given prefix, either * appending or prepending to the ones previously set for this prefix. * * @param string $prefix The prefix * @param array|string $paths The PSR-0 root directories * @param bool $prepend Whether to prepend the directories */ PHP_METHOD(Xpl_ClassLoader, add) { zend_bool prepend; zval *prefix, *paths = NULL, *prepend_param = NULL, *firstChar = NULL, *prefixPaths = NULL, _4, _5, *_6, *_7, *_0$$5, *_1$$5, *_2$$6, *_3$$6, *_8$$9, *_9$$10; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 1, &prefix, &paths, &prepend_param); ZEPHIR_SEPARATE_PARAM(paths); if (!prepend_param) { prepend = 0; } else { prepend = zephir_get_boolval(prepend_param); } if (Z_TYPE_P(paths) == IS_STRING) { ZEPHIR_INIT_NVAR(paths); zephir_create_array(paths, 1, 0 TSRMLS_CC); zephir_array_fast_append(paths, paths); } if (Z_TYPE_P(prefix) != IS_STRING) { if (prepend) { ZEPHIR_INIT_VAR(_0$$5); _1$$5 = zephir_fetch_nproperty_this(this_ptr, SL("fallbackDirsPsr0"), PH_NOISY_CC); zephir_fast_array_merge(_0$$5, &(paths), &(_1$$5) TSRMLS_CC); zephir_update_property_this(this_ptr, SL("fallbackDirsPsr0"), _0$$5 TSRMLS_CC); } else { ZEPHIR_INIT_VAR(_2$$6); _3$$6 = zephir_fetch_nproperty_this(this_ptr, SL("fallbackDirsPsr0"), PH_NOISY_CC); zephir_fast_array_merge(_2$$6, &(_3$$6), &(paths) TSRMLS_CC); zephir_update_property_this(this_ptr, SL("fallbackDirsPsr0"), _2$$6 TSRMLS_CC); } RETURN_MM_NULL(); } ZEPHIR_SINIT_VAR(_4); ZVAL_LONG(&_4, 0); ZEPHIR_SINIT_VAR(_5); ZVAL_LONG(&_5, 1); ZEPHIR_INIT_VAR(firstChar); zephir_substr(firstChar, prefix, 0 , 1 , 0); ZEPHIR_OBS_VAR(prefixPaths); _6 = zephir_fetch_nproperty_this(this_ptr, SL("prefixesPsr0"), PH_NOISY_CC); zephir_array_fetch(&_7, _6, firstChar, PH_READONLY, "xpl/classloader.zep", 262 TSRMLS_CC); if (!(zephir_array_isset_fetch(&prefixPaths, _7, prefix, 0 TSRMLS_CC))) { ZEPHIR_CPY_WRT(prefixPaths, paths); } else { if (prepend) { ZEPHIR_INIT_VAR(_8$$9); zephir_fast_array_merge(_8$$9, &(paths), &(prefixPaths) TSRMLS_CC); ZEPHIR_CPY_WRT(prefixPaths, _8$$9); } else { ZEPHIR_INIT_VAR(_9$$10); zephir_fast_array_merge(_9$$10, &(prefixPaths), &(paths) TSRMLS_CC); ZEPHIR_CPY_WRT(prefixPaths, _9$$10); } } zephir_update_property_array_multi(this_ptr, SL("prefixesPsr0"), &prefixPaths TSRMLS_CC, SL("zz"), 2, firstChar, prefix); ZEPHIR_MM_RESTORE(); }