当前位置: 首页 > news >正文

网站域名怎么查询备案价格wordpress 静态缓存

网站域名怎么查询备案价格,wordpress 静态缓存,江苏网站建设平台,添加网站图标【PECL】在扩展中实现 autoload 摘要PHP代码想这么写C 代码这么实现 摘要 php-8.3.x 用扩展写个框架。想实现类管理器,自动加载,上代码: PHP代码想这么写 $ws new \Ziima\Applet(); $ws->import(Ziima, ../base/core); $ws->runAu…

【PECL】在扩展中实现 autoload

  • 摘要
  • PHP代码想这么写
  • C 代码这么实现

摘要

php-8.3.x 用扩展写个框架。想实现类管理器,自动加载,上代码:

PHP代码想这么写

$ws = new \Ziima\Applet();
$ws->import('Ziima', '../base/core');
$ws->runAutoload();$t = new \Ziima\Template\Context();
print_r($t);

C 代码这么实现

没有文档,硬翻源代码一点点抠出来这么个思路,能用。

ZEND_METHOD(Ziima_Applet, runAutoload) {zval *this       = getThis();zend_string *req = NULL;ZEND_PARSE_PARAMETERS_START(0, 1)Z_PARAM_OPTIONALZ_PARAM_STR(req)ZEND_PARSE_PARAMETERS_END();//[1] 没有参数 , 或者 this._auto 未设置,判断是PHP调用 runAutoload 来注册zval *_auto = zend_read_property(ce_Ziima_Applet, Z_OBJ_P(this), ZEND_STRL("_auto"), true, NULL);if (_auto == NULL || Z_TYPE_P(_auto) != IS_OBJECT) {zval           cu, par_r;zend_function *fn = zend_hash_str_find_ptr_lc(&Z_OBJCE_P(this)->function_table, ZEND_STRL("runAutoload"));zend_create_closure(&cu, fn, ce_Ziima_Applet, ce_Ziima_Applet, this);zend_fcall_info fci;fci.size         = sizeof(zend_fcall_info);fci.object       = NULL;fci.named_params = NULL;fci.retval       = &par_r;fci.param_count  = 3;fci.params       = ecalloc(sizeof(zval), 3);ZVAL_COPY_VALUE(fci.params, &cu);ZVAL_TRUE(fci.params + 1);ZVAL_TRUE(fci.params + 2);ZVAL_STRING(&fci.function_name, "spl_autoload_register");if (zend_call_function(&fci, NULL) != SUCCESS) {zval_delref_p(&cu);RETURN_FALSE;}if (Z_TYPE(par_r) != IS_TRUE) {zval_delref_p(&cu);RETURN_FALSE;}zend_update_property(ce_Ziima_Applet, Z_OBJ_P(this), ZEND_STRL("_auto"), &cu);RETURN_TRUE;}// [2] 有参数进来,则认为是被 spl_autoload_register 调用的if (req == NULL) {RETURN_FALSE;}zval *_vendor = zend_read_property(ce_Ziima_Applet, Z_OBJ_P(this), ZEND_STRL("_vendor"), true, NULL);if (_vendor == NULL || Z_TYPE_P(_vendor) != IS_ARRAY)RETURN_FALSE;if (zend_array_count(Z_ARR_P(_vendor)) < 1)RETURN_FALSE;// [3] 类加载器只能处理有命名空间的if (!nstr_contains(req->val, req->len, '\\'))RETURN_FALSE;vector_object *vreq   = vector_split_ex(req->val, req->len, '\\', VCONF_AUTO_TRIM | VCONF_DENY_EMPTY);vector_item   *ve     = vector_first(vreq);zend_string   *ns_req = zend_string_init(ve->key.val, ve->key.len, false);zend_string   *dp_req = NULL;zend_long      h      = 0;zend_string   *k      = NULL;zval          *v      = NULL;// [4] 找登记路径ZEND_HASH_MAP_FOREACH_KEY_VAL(Z_ARR_P(_vendor), h, k, v)if (k->len != ns_req->len)continue;if (strncasecmp(k->val, ns_req->val, ns_req->len) == 0) {dp_req = zend_string_dup(Z_STR_P(v), false);break;}ZEND_HASH_FOREACH_END();if (dp_req == NULL) {vector_destroy(vreq);zend_string_release(ns_req);RETURN_FALSE;}// [5] 拼路径buf_string tmp;bstr_init(&tmp, dp_req->len + req->len + 64);bstr_append(&tmp, dp_req->val);if (tmp.val[dp_req->len - 1] == '/') {tmp.val[dp_req->len - 1] = 0;tmp.len--;}VECTOR_FOREACH_BEGIN(vreq, h, ve)if (h == 1)continue;bstr_append_char(&tmp, '/');bstr_append_ex(&tmp, ve->key.val, ve->key.len);VECTOR_FOREACH_END();vector_destroy(vreq);bstr_append(&tmp, ".php");// [6] 查文件zend_string_release(ns_req);zend_string_release(dp_req);if (access(tmp.val, F_OK) != 0) {bstr_free(&tmp);RETURN_FALSE;}// kdebug("load %s from %s", ns_req->val, tmp.val);// [7] 用 eval + include_once 包含bstr_append(&tmp, "');");const char *ps = "include_once('";uint32_t    ls = strlen(ps);memmove(tmp.val + ls, tmp.val, tmp.len);memcpy(tmp.val, ps, ls);if (zend_eval_string(tmp.val, NULL, "ziima_autoload_script") != SUCCESS) {bstr_free(&tmp);RETURN_FALSE;}bstr_free(&tmp);RETURN_TRUE;
}
http://www.yayakq.cn/news/755628/

相关文章:

  • 怎样知道哪个网站做推广好网站开发提供源代码
  • 网站页面制作视频单招网站开发
  • 陕西做网站的高德街景地图全景下载
  • 建设部网站最新消息一家只做家纺的网站
  • 看公狍和女人做爰网站招标网站免费平台
  • 如何创建网站详细步骤wordpress 登录模块
  • 公司网站开发怎么入账网站的交互设计有什么
  • wordpress建站有什么好处北京网站建站网
  • 网站建设的定位是什么品牌策划与设计
  • 建设网站虚拟现实技术接广告的平台推荐
  • 做设计参考的网站福州电商网站建设
  • 网站建设与管理用什么软件有哪些越南做企业网站
  • 做中东市场哪个网站合适网络服务网络营销
  • 网站建设有哪些分类福州企业如何建网站
  • 网站商城建设合同免费下载网络营销课程设置
  • 门户网站 特点网站收录突然全部没有了
  • 免费推广网站入口2022网站需求分析是在建站的什么阶段做的_为什么要做?
  • 南康区城乡规划建设局网站上海傲石设计网站
  • 龙华网站制作公司公司部门聚餐计入什么科目
  • 外 网站 公司移动端网站没有icp
  • 好看的知名企业网站网站开发和程序开发
  • 网站标签优化怎么做登录网页版网址是什么
  • 我要自学网网站wordpress自动博客插件
  • 手机定制网站网站开发最新流程
  • 网站电子商务类型wordpress手机 不适应
  • 爱站工具包的主要功能怎样做网站宣传
  • 网站定制建设手机h5页面制作
  • 直播网站自己做网站哪种好做
  • 在线酒店预定网站制作十堰网站建设制作公司
  • 做笑话网站需要什么做水浒传有关的网站