当前位置:编程学习 > php >>

thinksns 核心架构及目录结构

核心与服务、公共Model、插件、Widget、第三方类库共同构成了系统的大根基,其他所有应用都其上构建。
术语解释
 核心:源自ThinkPHP框架,为系统提供MVC分离、底层数据库支持等核心功能,并提供诸多便捷的类库和函数库供系统其他部分使用。位于/core/目录。
 服务:一组全局通用的类库,实现对特定功能的封装。位于/addons/services/目录,如邮件发送(Mail)、用户认证(Passport)等。
 公共Model:一组全局通用模型。位于/addons/models/目录,如附件模型(AttachModel)、地区模型(AreaModel)等。
 插件:为实现某种功能而增加的程序文件。位于/addons/plugins/目录,包括第三方平台登陆插件和勋章两种。
 Widget:一组可以在任意HTML页面调用的代码块。位于/addons/widgets/目录,包括评论(Comment)、选择好友(SelectFriend)等。
 第三方类库:其他开源的第三方类库。位于/addons/libs/目录,如phpmailer等。
 应用:实现特定功能的独立模块,基于上述的系统结构构建。位于/apps/目录,如日志(Blog)、相册(Photo)等。
API:应用程序编程接口(Application Programming Interface)。位于/api/目录,如微博API、用户资料API等。
--------------------------------------------------------------------------------------------------------------------------------------
微博
微博虽然也是以系统独立应用的身份出现(如图1所示),但它还肩负着系统核心应用的责任。许多系统元素完全构建于微博应用之上,如微博Widget(即“分享”功能)是直接操作微博,而WAP应用则是完全使用微博API架构。
漫游平台
系统应用中另一个特例是漫游应用。漫游应用来源于康盛的漫游平台,由于漫游平台的URL根据UCHome的目录结构生成,这与ThinkSNS的目录结构完全不同,而且还需兼顾到漫游平台的可移植性,所以集成的漫游应用不走标准的ThinkSNS2.0核心,而是使用漫游应用内部已实现的一个最简版框架。
如果您是模版开发人员,那您得特别留意!因为您在公共目录下修改完头部和左侧的页面后,还要修改漫游下的头部和左侧
(位于/apps/myop/themes/classic/目录)。
------------------------------------------------------------------------------------------------------------------------------------------
目录结构
ThinkSNS2.0
├─ _runtime ------------- 运行时缓存
├─ addons ------------- 扩展库
│ ├─ libs ------------- 第三方类库
│ ├─ models ------------- 公共Model
│ ├─ plugins ------------- 插件
│ │ ├─ login ------------- 第三方平台登录插件
│ │ ├─ Medal ------------- 勋章
│ │ └─ Tags ------------- 标签
│ ├─ services ------------- 系统服务
│ └─ widgets ------------- 系统Widget
├─ api ------------- API库
├─ apps ------------- 系统应用
│ ├─ admin ------------- 管理后台
│ ├─ home ------------- Home应用
│ ├─ myop ------------- 漫游应用
│ ├─ wap ------------- 手机WAP端
│ └─ weibo ------------- 微博应用
├─ core ------------- 核心
│ ├─ sociax ------------- 系统核心文件
│ ├─ ThinkPHP ------------- ThinkPHP核心
│ └─ sociax.php ------------- 核心引导文件
├─ data ------------- 站点数据
├─ install ------------- 系统安装文件
├─ public
│ ├─ admin ------------- 管理后台的样式
│ ├─ js ------------- 系统JS库
│ └─ themes ------------- 系统模板
├─ access.php ------------- 节点权限控制文件
├─ cleancache.php ------------- 缓存清理文件
├─ config.inc.php ------------- 站点配置文件
├─ index.php ------------- 站点入口文件
├─ shorturl.php ------------- 短地址文件
└─ thumb.php ------------- 自动缩略图生成文件
------------------------------------------------------------------------------------------------------------------------------
应用架构及目录结构
应用的目录位置及结构:
ThinkSNS2.0
├─ apps
├─ app
├─ Appinfo ------------- 安装信息、安装卸载执行文件、图标
├─ Common ------------- 函数库common.php
├─ Conf ------------- 项目配置config.php
├─ Language ------------- 通知、动态的语言包
├─ Lib
│ ├─ Action ------------- 操作类库
│ ├─ Model ------------- 模型类库
│ └─Widget ------------- 插件库
└─ Tpl ------------- 模板、css、js文件
入口文件
ThinkSNS2.0只有一个公共入口文件,即ThinkSNS目录下的index.php.
 URL 模式
URL的访问方式是index.php?app=APP_NAME&mod=Action&act=function
 函数库
应用自身的函数库放在该应用目录下的Common/common.php 里即可,这里面的函数会随该应用一起加载,可在该应用内随意调用。系统函数库请参阅附录的“函数库”。
 模板
<include file="__THEME__/header" />
<!-- 内容begin -->
<div class="content no_bg">
<div class="main no_l">
<div class="mainbox">
<!-- 画布begin -->
<div class="mainbox_C">
[……]
</div>
<!-- 画布end -->
</div>
10 / 32
</div>
</div>
<!-- 内容end -->
<include file="__THEME__/footer" />
应用的样式文件统一存放在的Tpl 下的Public/目录,通过../Public/xxx.css引用,应用的JS文件统一放到应用项目下的Tpl/下的Public/js/目录,通过../Public/js/xxx.js引用。
--------------------------------------------------------------------------------------------------------------------
 开发指南
3.1命名规范与编码规范
参考ThinkPHP的命名与编码规范:http://thinkphp.cn/Manual/20
3.2使用函数库、类库和Widget
使用系统函数库
系统函数位于/core/sociax/functions.php和/core/sociax/extend.php文件,为全局有效函数,可以直接调用。
如获取用户昵称的方法:$uname = getUserName($uid);
使用服务
服务位于/addons/services/目录下,通过service('serviceName')->method ($param); 来使用服务。
如验证用户是否登录的方法:$is_logged = service('Passport')->isLogged();
使用公共Model
公共Model位于/addons/models/目录下,通过model('modelName')->method ($param);来使用公共Model。
如获得地区列表的方法:$area_list = model('Area')->getAreaList();
使用Widget
Widget位于/addons/widgets/目录下,通过W('widgetName',array('param'=> 'value'))来调用Widget。一般Widget是用在页面中,所以调用方法为:{:W('widgetName',
11 / 32
array('param'=>'value'))}。
如在页面中展示可能认识的人的方法:{:W('RelatedUse',array('uid'=>'1'))}
使用第三方类库
第三方类库一般放置在/addons/libs/目录下,使用前通过include_once等函数将文件引入即可。
3.3使用弹出窗、提示消息、编辑器
在ThinkSNS2.0的世界里,jQuery库是我们默认的JS框架,它在页面头部自动载入。ThinkSNS2.0在jQuery的基础上对弹出窗、提示消息和KISSY编辑器进行了封装,本节主要介绍它们的使用方法(jQuery库官方文档:http://docs.jquery.com/Main_Page)。
弹出窗
图2 弹出窗效果图
如图2所示,弹出窗至少包含标题、关闭按钮和内容三部分,为保证用户操作的连贯性,一般会在内容部分添加“确定”和“取消”按钮。
 弹出窗的调用方法:
<script>
function yourFunc() {
ui.box.load(your_url, {title:'这里是标题'});
}
</script>
 在your_url中放置弹出窗的内容。注意:“确定”和“取消”按钮也是内容的一部分!
 关闭弹出窗:
补充:Web开发 , php ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,