Skip to main content

概述

X5,我们将开放进行到底,让它成为一个平台。Discuz! 应用包含本文的所有内容,请在详细阅读本文内容后,阅读相关的应用开发指导。

结构概述

目录结构

Discuz! X5.0 将目录结构进行优化和改造,对文件的作用进行重新归类的同时,也彻底加强了开放性。重新整理后的目录结构采用了新的架构命名为 MitFrame

APP 目录

Discuz! X5.0 将各个模块功能的包含类文件进行了合并,所有同模块的文件都在各自的目录下。X3.5 版本的 /source/module 目录已经合并到各个 app 的子目录 /source/app/xxx/module 中。 如果您要进行 app 的扩展,可直接在 /source/app 下创建目录,然后在此目录下创建同名文件,例如 /source/app/xxx/xxx.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 格式的模板文件:
template('tpl', 0, 'source/app/xxx/template');

子文件目录

子文件目录将 X3.5 版本的 /source/include 目录进行了优化改造,并按照各个模块以及其子模块进行逐层命名。全局子文件位于 /source/child 目录下,各个 app 的子文件位于 /source/app/xxx/child 目录下。 Discuz! X5.0 系统程序的相应模块会自动引用 child 目录中相应模块的文件,但是如果插件注册了接管,可以完全代替原有系统的逻辑。 管理后台的 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.phpnamespace sample; class lib_base {...}
sample\\lib\\sub_base::xxx()/source/plugin/sample/lib/sub/sub_base.phpnamespace sample\\lib; class sub_base {...}
sample\\lib\\sub\\ssub_base::xxx()/source/plugin/sample/lib/sub/ssub/ssub_base.phpnamespace sample\\lib\\sub; class ssub_base {...}

数据文件目录

存放非 PHP 且无修改权限的数据文件。X3.5 中 data/ipdatasource/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 里,应用 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特性” 标签。
  5. 包含 X5.0 特性的 Discuz! 版应用请填写 “W1.5”。X5.0 应用和 W1.5 应用理论上代码完全一致,但是二者不能共用一个分支。
  6. X5.0 开始兼容 JSON 格式的配置文件。