应用
目录结构
应用是ThinkCMF中最大的独立模块,一个应用会包含自己的数据库表,控制器,模型和视图.它的核心代码位于app目录下,以 portal 应用为例(请到你的ThinkCMF后台应用市场下载)
thinkcmf 根目录├─api api目录├─app 应用目录│ ├─portal 门户应用目录│ │ ├─controller 控制器目录│ │ ├─model 模型目录│ │ ├─PortalApp.php 应用类│ │ └─ ... 更多类库目录│ ├─ ... 更多应用
同时一个应用也会有自己的视图,但在 ThinkCMF 中一个应用会分为前台视图层和后台视图层;
thinkcmf 根目录├─public WEB 部署目录(对外访问目录)│ ├─themes 前后台主题目录│ │ ├─admin_simpleboot3 后台默认主题(以admin 开头)│ │ │ └─portal 应用视图目录│ │ │ │ ├─admin_article 后台文章管理控制器视图目录│ │ │ │ ├─admin_category 后台文章分类管理控制器视图目录│ │ │ │ └─admin_page 后台页面管理控制器视图目录│ │ └─simpleboot3 前台主题│ │ │ └─portal 应用视图目录│ │ │ │ ├─index.html 应用前台首页│ │ │ │ └─ ... 其它前台文件
注:应用后台主题目录以 admin开头
应用类
应用类主要用于应用的安装、升级和卸载,文件名和类名是应用名大写+App,如portal应用的应用类文件是PortalApp.php,应用类名是PortalApp;
<?phpnamespace app\portal;use think\facade\Db;class PortalApp{// 应用安装public function install(){$appDbSqlFile = CMF_ROOT . "app/portal/data/portal.sql";if (file_exists($appDbSqlFile)) {$dbConfig = config('database.connections.mysql');$sqlList = cmf_split_sql($appDbSqlFile, $dbConfig['prefix'], $dbConfig['charset']);$db = Db::connect();$db->startTrans();try {foreach ($sqlList as $sql) {$db->execute($sql);}} catch (\Exception $e) {$db->rollback();return false;}return true;}return false; //安装成功返回true,失败false}// 应用卸载public function uninstall(){return true; //卸载成功返回true,失败false}}
数据库表结构
应用数据表命名时,我们希望你最好加个表前缀,如portal_这样会让你的数据库表结构也很清晰,
cmf_portal_category (portal应用 文章分类表)cmf_portal_category_post (portal应用 分类文章对应表)cmf_portal_post (portal应用 文章表)cmf_portal_tag (portal应用 文章标签表)cmf_portal_tag_post (portal应用 标签文章对应表)
应用化才是你发展的重点
应用化是你把业务分开的一个不错的方式,基于 cmf 提供的基础功能,你不用再关心权限,用户等最基础的东西,只要根据自己的应用场景增加应用就可以了,比如:论坛,商城,话题…,甚至你可以在自己的行业里做应用.
如果你的应用有足够大的通用性你完全可以把它做成一个产品,对于已经使用过 cmf 的用户,只要把你的应用复制安装过来,就能用了!
所以应用化,你可以最方便的享受 cmf 的更新,同时也可以以应用形式发布自己的产品,即时是你内部自己用,项目维护发展也足够清晰!
别再改 cmf 的核心代码了,不好升级,改了,再也不会有老猫这个免费,还天天做客服的高级搬砖工了! 管好你自己的应用就好了!
