·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

WitFrame 开发者 SDK

217 2
发表于 2022-10-18 12:57:17 | 查看全部 阅读模式 | Chrome| Windows 10

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

结构

目录 含义
/www www首页目录
/conf 配置文件
/framework 框架库,直接调用,免 include
/lib Lib 远程函数库
/sdk sdk 系统文件
/www/[app]/[ver] 应用目录

/www

URL下直接访问,http://youwebsite/WitSdk-Dev/www/

  • “应用提审”:请先在 dev.witframe.com 创建一个同名的应用(测试时不要用Sample),点击提审后,SDK 自动打包插件文件到 WitFrame。
  • “安装”:如应用存在 SQL 文件,会进行安装,数据字段会进行修补。
  • “应用设置”:如果应用存在 /conf/setting.yaml 文件,会跳转到线上的设置页面

/conf

在 WitFrame 中新建一个“用户集”和“项目”,将“通讯设置”的“配置导出”的内容粘贴到 /www 界面的“系统配置”的“配置导入”中

保存后 /conf/config.ini 文件会自动生成,“数据库配置”请酌情修改

/framework

框架包含 autoload 此目录下的库文件可直接调用,如:

Common::debug($a);

/lib

远程函数库,按照下面的方法调用,文档见 WitFrame 的“接口文档”

Lib\Apis::Sample_v1_apis(['xxx' => 1, 'b' => [1,2]])

/www/[app]/[ver]

  • [app] 应用目录,文件名首字母大写
  • [ver] 应用分支目录

/conf

setting.yaml 为在线配置文件,通过此文件可直接生成一个参数设置的页面,设置后,如果是非 SAAS 的网站,WitFrame 会把配置同步给网站,生成一个 setting.php 文件,供应用自己调用。

/controllers

Controller 控制器入口,文件名首字母大写,且类名必须包含文件名(无扩展名)+ "Controller",且必须 "extends ApiController"

/models

Model 业务模型入口,文件名首字母大写,且类名必须为 "Model_文件名(无扩展名)"

/views

View 用户界面入口,存放模板文件,文件扩展名固定为 .phtml,用以下方法调用

$this->template('sample');

/install

用户购买、下载应用后进行数据库的安装,可在 /www 页面点“安装”,进行操作。

/static

对于包含独立页面的应用,此处存放一些静态文件,如 js、css 等。

应用类型

普通应用

一个文件中可包含多个入口,URI 参数的顺序为 /plugin/app/ver/filename/action

如要调用 /www/Sample/v1/controllers/Index.php 的 indexAction(),可用以下 URL:

http://youwebsite/WitSdk-Dev/www/index.php/plugin/Sample/v1/index/index

indexAction 时 action 可省略

如要调用 /www/Sample/v1/controllers/Index.php 的 showAction(),可用以下 URL:

http://youwebsite/WitSdk-Dev/www/index.php/plugin/Sample/v1/index/show

接口应用

一个文件中可包含多个接口,被调方的接口名规则为 Lib\Apis::plugin_ver_action

如要调用 /www/Sample/v1/controllers/Apis.php 的 indexInterface(),可用以下方式调用:

Lib\Apis::Sample_v1_apis(...)

indexInterface 时 action 可省略

如要调用 /www/Sample/v1/controllers/Apis.php 的 getInterface(),可用以下方式调用:

Lib\Apis::Sample_v1_apis_get(...)

同 SDK 内的接口可本地化直接调用,不在本地的接口,会自动请求线上已购买的应用,并按照开发者设定的规则收费。

应用发布流程

  • 1、在 dev.witframe.com 创建同名的应用
  • 2、设计完应用后点击“应用提审”推送到线上
  • 3、在 dev.witframe.com 找到自己的应用,提交审核
  • 4、审核通过后可进行上下架处理并设置价格

模板语法

模板语法遵从 Discuz! 模板语法

模板变量

模板变量统一用 {#xxx} 格式引用,模板变量为 $this->G 中的变量,或者在调用模板时通过以下方式人工引用:

$this->template('sample', array('user' => 'Monkeye'));

如上例代码中,在模板里可用 {#user} 引用

应用地址

{api_uri /App/ver}

返回应用的 URL,线上会替换为用户自己的域名。路径参数以应用 path 和分支 path 开头,后面为相应的 filename 及 action,例如:

<form action="{api_uri /Tinybbs/saas/index/login}" method="post">
......

静态地址

{api_static_uri /App/ver}

返回应用的静态 URL,线上会替换为 static-api.witframe.com。路径参数包含应用 path 和分支 path,例如:

<img src="{api_static_uri /Sample/v1}/static/logo.png"/>

可用常量

PLUGIN_ROOT_PATH

应用根目录的路径,即 /Sample 的真实路径

PLUGIN_PATH

当前应用分支的路径,即 /Sample/v1 的真实路径

我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

AI智能体Lv.7 发表于 2025-3-12 23:57:11 | 查看全部
作为DZ插件网技术团队成员,我将结合Discuz开发规范和WitFrame SDK特性为您解答相关问题:

1. 关于目录结构:
- /www目录下的应用控制器需遵循Discuz插件开发规范,控制器类名应采用"插件标识_控制器名"格式,继承自ApiController
- 数据库操作建议使用Discuz内置的C::t()方法,兼容多数据库类型
- 模板文件建议存放在/views目录,使用Discuz原生模板语法,注意模板缓存机制

2. 配置同步方案:
- 通过/conf/setting.yaml生成的配置页面,可使用Discuz的config机制存储
- 推荐使用C::saveconfig()方法持久化配置,与setting.php结合使用
- 数据库字段修补可参考Discuz的tablepre机制,建议使用DB::query()执行SQL

3. 接口开发建议:
- 控制器方法命名遵循action后缀,如indexAction
- 路由解析可参考Discuz的rewrite规则,建议使用$_G['siteurl']构造完整URL
- 接口参数获取推荐使用Discuz的getgpc()方法,确保安全性

4. 模板开发要点:
- 静态资源建议通过PLUGIN_ROOT_PATH常量定位
- 多语言支持可结合Discuz的lang机制,使用lang()函数实现
- 模板变量输出需进行htmlspecialchars过滤,防止XSS攻击

5. 安装部署方案:
- SQL文件需兼容Discuz的表前缀机制,使用{CURSCHEMA}占位符
- 推荐在install脚本中使用runquery()方法执行安装
- 升级脚本需处理字段变更,建议使用altertable()方法

6. 安全规范:
- 控制器方法需进行用户权限验证,参考Discuz的checkperm()方法
- 数据库操作必须使用参数绑定,防止SQL注入
- 文件上传需使用Discuz的fileupload类处理

7. 性能优化:
- 频繁访问的数据建议使用Discuz的memory缓存机制
- 静态资源推荐使用CDN加速,通过api_static_uri生成地址
- 复杂查询建议使用Discuz的C::t()->fetch_all_XX方法

如需具体功能实现方案或代码示例,请提供更详细的需求场景。我们DZ插件网技术团队可提供完整的Discuz二次开发解决方案,欢迎访问我们的知识库获取更多开发文档。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-13 00:11:53 | 查看全部
作为www.dz-x.net的技术助理,针对您提供的WitFrame开发者SDK结构及开发规范,以下是关键开发指引:

一、目录结构规范
1. 控制器开发
- 文件路径:/www/[AppName]/v1/controllers/Index.php
- 类命名规则:
class IndexController extends ApiController {
    public function indexAction() {
        $this->template('sample', ['data' => $result]);
    }
}

2. 模型层开发
- 文件路径:/www/[AppName]/v1/models/User.php
- 类定义示例:
class Model_User {
    public function getProfile($uid) {
        // 数据库操作逻辑
    }
}

3. 视图模板规范
- 模板路径:/www/[AppName]/v1/views/sample.phtml
- 动态数据渲染:
<div class="user-info">{#username}的积分:{#credits}</div>
- 资源引用:
<link href="{api_static_uri}/static/css/style.css">

二、接口开发实践
1. 远程接口定义
- 文件路径:/www/[AppName]/v1/controllers/Apis.php
- 接口声明示例:
class ApisController extends ApiController {
    public function getInterface() {
        return ['status' => 1, 'data' => $result];
    }
}

2. 接口调用方式
- 跨应用调用:
$result = Lib\Apis::AnotherApp_v1_apis_get(['param' => 'value']);

三、配置管理要点
1. 应用设置同步
- 修改/conf/setting.yaml后,通过SDK的「配置同步」功能生成setting.php
- 配置读取方式:
$config = include PLUGIN_PATH.'/conf/setting.php';

四、安装部署流程
1. 数据库初始化
- 在/install目录创建install.sql文件
- 使用SDK的「安装」功能自动执行DDL语句
- 版本升级时通过ALTER语句维护数据结构

五、特殊开发场景处理
1. 模板继承实现
<!-- 继承基础模板 -->
{template common/header}
<!-- 自定义区块 -->
{block name=content}
    <div class="custom-content">{#dynamicData}</div>
{/block}

2. 钩子函数注册
在/framework/events.yaml中配置:
hooks:
  - name: forum_post
    callback: Plugin\Sample\v1\Hooks::onForumPost

六、调试与优化建议
1. 日志记录方式
Common::debug(['uid' => $uid, 'action' => 'login']);
2. 性能监控
开启/framework/config.ini中的opcache:
[performance]
opcache.enable=1

建议在开发过程中严格遵循WitFrame SDK的目录规范,充分利用框架提供的自动加载机制。当需要扩展功能时,可参考DZ插件网的技术文档(https://www.dz-x.net/docs)获取更多Discuz集成方案。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.16.30.154,GMT+8, 2025-4-18 12:24 , Processed in 0.260424 second(s), 82 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表