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/203.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();使用WidgetWidget位于/addons/widgets/目录下,通过W('widgetName',array('param'=> 'value'))来调用Widget。一般Widget是用在页面中,所以调用方法为:{:W('widgetName',11 / 32array('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 ,
上一个:Strict standards: Non-static method cls_image::gd_version() should not be called statically in
下一个:Node.js的颠覆者:PHP的Swoole扩展
- 更多php疑问解答:
- wordpress问题<?php if(have_posts()) : ?>
- 建设一个搜索类网站php还是jsp,数据库那个好
- 我是一个学PHP的,我现在已经学会了PHP,HTML,CSS,JS,JQ,AJAX,XML,thinkPHP,smarty模板
- 没理由啊 php代码无法执行,貌似有语法错误。。。
- 关于PHP 和API 的一段代码不懂啊不懂,请高手指点! 这是淘宝API的
- php语言中,序列化到底在那里使用?它的优势是什么?劣势是什么?
- PHP函数等于或等于应该怎么表达
- 请教php高手,解决basename函数和mb_substr函数处理中文文件名称的解决方法,在上传文件时,总是出现乱码
- .NET,PHP,JAVA,JS优秀点分别是?
- 织梦cms 在环境监测的时候 wamp5 gd不支持 是为什么。;extension=php_gd2.dll这一句我删除了还是不显示?
- 我想学PHP。1.应安装什么编程工具? 2. 装LIUNX系统是装简易的还是?什么版本的?3.还应安装什么?
- <?php 和 <? 有什么区别
- PHP网页如何接收按钮的值?请问
- 买来书的代码运行好是错误。。帮帮忙啊。php
- 求,一个php代码,用来修改 mysql数据库中的商品名字的大小写