开放平台
首页
我的应用
我的分销
开发文档
技术社区
魔方加密
WitFrame
注册
登录
资料设置
消息提醒
财务管理
密码安全
身份认证
退出
Discuz! X5.0 开发技术文档
<div class="tbmu bbda mbm"><a href="?ac=document&page=dev_x5_index" class="a">结构概述</a><span class="pipe">|</span><a href="?ac=document&page=dev_x5_app">App 扩展</a><span class="pipe">|</span><a href="?ac=document&page=dev_x5_plugin">新增插件接口</a><span class="pipe">|</span><a href="?ac=document&page=dev_x5_template">新增模板接口</a><span class="pipe">|</span><a href="?ac=document&page=dev_x5_witframe">云插件</a></div> [TOCM] <img src="https://static.witframe.com/image/logo/dzx5.png" width="100" style="float:right" /> X5,我们将开放进行到底,让它成为一个平台 Discuz!ᵂ 应用包含本文的所有内容,请在详细阅读本文内容后,阅读 [Discuz!ᵂ 应用开发指导](https://open.dismall.com/?ac=document&page=dev_dzw_index "Discuz!应用开发指导") ## 结构概述 ### 目录结构 Discuz! X5.0 将目录结构进行优化和改造,对文件的作用进行重新归类的同时,也彻底加强了开放性,我们把这个全新的架构命名为 **MitFrame**。重新整理后的目录结构见下文: [X5.0 程序目录索引](https://open.dismall.com/?ac=document&page=x5_1_dir_index "X5.0 程序目录索引") #### APP 目录 Discuz! X5.0 将各个模块功能的包含类文件进行了合并,所有同模块的文件都在各自的目录下。 X3.5 版本的 /source/module 目录已经合并到各个 app 的子目录 /source/app/xxx/module 中。 如果您要进行 app 的扩展,可直接在 /source/app 下创建目录,然后在此目录下创建同名文件,例如 /source/app/xxx/xxx.php ```php <?php require './source/class/class_core.php'; $discuz = C::app(); $discuz->cachelist = []; $discuz->init(); require_once appfile('yyy/zzz'); // 调用 /source/app/xxx/yyy/zzz.php 文件 ``` /source/app/xxx 目录下可以直接创建模板文件,可用类似以下方式调用 source/app/xxx/template/tpl.php 模板文件。仅支持 php 格式是模板文件 ```php template('tpl', 0, 'source/app/xxx/template'); ``` #### 子文件目录 子文件目录将 X3.5 版本的 /source/include 目录的进行了优化改造,并按照各个模块以及其子模块进行逐层命名,全局子文件位于 /source/child 目录下,各个 app 的子文件位于 /source/app/xxx/child 目录下。Discuz! X5.0 系统程序的相应模块会自动引用 child 目录中相应模块的文件,但是如果插件注册了接管,可以完全代替原有系统的逻辑。 接管方法详见<a href="?ac=document&page=dev_x5_plugin">“新增插件接口”>“子文件”</a>。 管理后台的 URL admin.php?action=app&operation=xxx:yyy 可以直接调用 /source/app/xxx/admin/yyy.php。 #### 类文件目录 类文件目录中的文件因 autoload 会自动调用,代码中只需要直接写类名即可调用到,例如下例中可直接调用到 /source/class/class_i18n.php 文件中的 class i18n{} ` return i18n::cmd($cmd, $langkey, $path); ` 对于插件类、App类的调用可通过命名空间的方式,见下表: | 调用代码 | 文件名 | 类代码 | | ------------ | ------------ | ------------ | | sample\lib_base::xxx() | /source/plugin/sample/lib/lib_base.php | namespace sample;<br><br>class lib_base {...} | | sample\lib\sub_base::xxx() | /source/plugin/sample/lib/sub/sub_base.php | namespace sample\lib;<br><br>class sub_base {...} | | sample\lib\sub\ssub_base::xxx() | /source/plugin/sample/lib/sub/ssub/ssub_base.php | namespace sample\lib\sub;<br><br>class ssub_base {...} | #### 数据文件目录 存放非 PHP 且无修改权限的数据文件,X3.5 中 data/ipdata、source/include/table 的内容迁移到了此目录下。 #### 首页文件目录 此目录为 X3.5 首页的文件。因此,理论上 Discuz! X5.0 中首页只有一个 index.php 文件,其他文件是为了兼容旧版本链接而设置的跳转文件,因此所有首页文件都可用 index.php?app=xxx 的新方式访问。同时,我们也优化了插件模块文件的访问路径,当 ./source/app 中指定 app 不存在的时候,plugin.php?id=xxx:yyy 的访问路径,可用 index.php?app=xxx&module=yyy 代替。 ### 数据字典 [X5.0 数据字典](https://open.dismall.com/?ac=document&page=dev_x5_db "X5.0 程序目录索引") ### 版本兼容字段 在 X5.0 里,应用 XML/JSON 配置文件中的 version 字段的值有以下新的注意事项: 1、version 字段值写法为 “X5.0”,而不是 “X5”; 2、“X5.0” 的含义是 X5.0+,即 X5.1 版本兼容 “X5.0”,但不兼容 “X5.2”,因此目前无需使用类似 “X5.0,X5.1,X5.2”的写法,只需写 “X5.0” 即可,除非应用只兼容 X5.1+,可填写 “X5.1”; 3、X5.0 起不再兼容 X3.5 以及更老版本的应用,应用无法直接安装。请确保您的应用 X3.x 版应用兼容了 PHP8 后再打上“X5.0”兼容标记,并在开放平台进行更新发布。对于升级上来的 X3.x 应用请及时做好对 X5.0 的兼容工作; 4、对于使用了 X5.0 新特性的应用,因包含新特性的缘故,不可能与 X3.x 应用共存,必须新建分支版本。对于此类应用,我们会打上额外的 “X5特性” 标签。我们鼓励广大开发者开发更多包含 “X5新特性” 的应用; 6、包含 X5.0 特性的 Discuz!ᵂ 版应用请填写 “W1.5”。X5.0 应用和 W1.5 应用理论上代码完全一致,但是二者不能共用一个分支; 7、X5.0 开始兼容 JSON 格式的配置文件;
开发文档
平台介绍
技术文档