应用

目录结构

应用是ThinkCMF中最大的独立模块,一个应用会包含自己的数据库表,控制器,模型和视图.它的核心代码位于app目录下,以 portal 应用为例(请到你的ThinkCMF后台应用市场下载)

  1. thinkcmf 根目录
  2. ├─api api目录
  3. ├─app 应用目录
  4. ├─portal 门户应用目录
  5. ├─controller 控制器目录
  6. ├─model 模型目录
  7. ├─PortalApp.php 应用类
  8. └─ ... 更多类库目录
  9. ├─ ... 更多应用

同时一个应用也会有自己的视图,但在 ThinkCMF 中一个应用会分为前台视图层和后台视图层;

  1. thinkcmf 根目录
  2. ├─public WEB 部署目录(对外访问目录)
  3. ├─themes 前后台主题目录
  4. ├─admin_simpleboot3 后台默认主题(以admin 开头)
  5. └─portal 应用视图目录
  6. ├─admin_article 后台文章管理控制器视图目录
  7. ├─admin_category 后台文章分类管理控制器视图目录
  8. └─admin_page 后台页面管理控制器视图目录
  9. └─simpleboot3 前台主题
  10. └─portal 应用视图目录
  11. ├─index.html 应用前台首页
  12. └─ ... 其它前台文件

注:应用后台主题目录以 admin开头

应用类

应用类主要用于应用的安装、升级和卸载,文件名和类名是应用名大写+App,如portal应用的应用类文件是PortalApp.php,应用类名是PortalApp;

  1. <?php
  2. namespace app\portal;
  3. use think\facade\Db;
  4. class PortalApp
  5. {
  6. // 应用安装
  7. public function install()
  8. {
  9. $appDbSqlFile = CMF_ROOT . "app/portal/data/portal.sql";
  10. if (file_exists($appDbSqlFile)) {
  11. $dbConfig = config('database.connections.mysql');
  12. $sqlList = cmf_split_sql($appDbSqlFile, $dbConfig['prefix'], $dbConfig['charset']);
  13. $db = Db::connect();
  14. $db->startTrans();
  15. try {
  16. foreach ($sqlList as $sql) {
  17. $db->execute($sql);
  18. }
  19. } catch (\Exception $e) {
  20. $db->rollback();
  21. return false;
  22. }
  23. return true;
  24. }
  25. return false; //安装成功返回true,失败false
  26. }
  27. // 应用卸载
  28. public function uninstall()
  29. {
  30. return true; //卸载成功返回true,失败false
  31. }
  32. }

数据库表结构

应用数据表命名时,我们希望你最好加个表前缀,如portal_这样会让你的数据库表结构也很清晰,

  1. cmf_portal_category (portal应用 文章分类表)
  2. cmf_portal_category_post (portal应用 分类文章对应表)
  3. cmf_portal_post (portal应用 文章表)
  4. cmf_portal_tag (portal应用 文章标签表)
  5. cmf_portal_tag_post (portal应用 标签文章对应表)

应用化才是你发展的重点

应用化是你把业务分开的一个不错的方式,基于 cmf 提供的基础功能,你不用再关心权限,用户等最基础的东西,只要根据自己的应用场景增加应用就可以了,比如:论坛,商城,话题…,甚至你可以在自己的行业里做应用.

如果你的应用有足够大的通用性你完全可以把它做成一个产品,对于已经使用过 cmf 的用户,只要把你的应用复制安装过来,就能用了!

所以应用化,你可以最方便的享受 cmf 的更新,同时也可以以应用形式发布自己的产品,即时是你内部自己用,项目维护发展也足够清晰!

别再改 cmf 的核心代码了,不好升级,改了,再也不会有老猫这个免费,还天天做客服的高级搬砖工了! 管好你自己的应用就好了!