ThinkSNS开源社交系统基础技术要点

ThinkSNS采PHP+MySQL技术平台,社交核心+多应用+多插件机制。 下面我们将为大家介绍开源社交系统ThinkSNS基础的技术要点:

开源社交系统ThinkSNS中,应用都有一个配置文件,目前应用目录是apps/<app name> 所以,配置文件就是:“apps/<app name>/manage.json”,下面有演示代码:
    我们可以看到这是比较新的应用配置,老的应用中只需要配置“resource”项即可,配置这项后,静态资源会缓存到“storage/app/<app name>”下,如果你配置了开发者模式,每次访问都会移动到这里,所以,storage/app目录是公开的暴露目录。
    实现上述所说就不得不提新的应用安装类,命名空间是TS\Helper\AppInstall -对新的应用机制做了一些列处理(目前是静态资源缓存),应用的运行器也是位于该命名空间下,“TS\Helper\Controller”这个及时运行器,只需要传入App Name,Controller Name, Action Name,运行器会通过Composer中查找到应用注册的命名空间,来运行需要的控制器代码。
    说到这里,不得不提一点重要的技术加入,就是Composer包管理工具。Composer可以说是所有语言的包管理工具中最好的工具,其提供了第三方包的规范集成,升级,卸载,还有符合PSR-0和PSR-4规范的AutoLoader工具。这使得TS中不在需要冗余的自定义自动加载来查找我们需要的类文件和库文件了,使用Composer就可以直接注册。我们用个最简单的例子来说明:
    据了解TS开发团队正在开发的全新Web Application应用,其中的重要代码存在于apps/<app na,e>/src目录下,那么,TS是如何能找到类自定义的目录位置的呢?说到这里,就得知道应用规定的命名空间,应用对命名空间没有任何要求,唯一有要求的就是控制器,Controller的看命名空间规定为“App\<app Name>”,这么规定是方便通过URL参数找到应用的控制器,当然,这个也只是暂时的,以后TS的开发中不在有任何命名空间等技术上的要求,你只需要调用路由器注册控制器,而不再是TS主动查找控制器了,使用的所有东西都需要提前注册,这符合先进的技术要求。
    言归正传,开源社交系统ThinkSNS怎么找到 Controller的呢?
    其实TS做的事情很简单,构造一个“App\<app name>\<controller name>”的类,然后实例化这个类即可,而这个类是应用开发的时候通过Composer注册到了自动加载中的。这个应用准寻的规范是PSR-4,所以,我们可以把代码放在任何目录,而不只是src目录,这个目录对于TS程序来说是未知的,而Composer却知道,所以TS只需要“询问”Composer就可以得到。
    此项新技术的引入,不但减少了繁重的开发工作,而且使得TS代码更加简单,因为我们不在关心和TS本身代码无关的事情,我们只需要专注自己代码部分的开发即可。所以TS的代码包,除开第三方库,从去年的24MB减少到了现在的21MB,为什么还是这么大?因为TS在使用新的技术的同时,要考虑到旧的模块的运行需求,现在无能为力把旧的模块都重新开发一次,因为没有这个必要。我们总不能说,生了一个孩子,孩子长丑了就塞回去重新生的吧!
    开源社交系统ThinkSNS改变的重点在ORM的加入,那么新的数据model怎么使用呢?来个基础的继承代码:
 
    没错,加上注释也就20行,那和之前的模型继承有什么区别?一个区别在于传递参数的改变,ORM支持在MySQL,SqlLite,SQL server等数据库中自由切换。另一个区别在于定义的关键词的改变,一但定义了模型,就可以对表经常操作了,是不是很简单。上表中,查询一条feed_id是1的数据,很简单,Feed::find(1)。OK,我们已经查询完成了。当然,返回的是一个object,而不是纯数据的Array。
    如果你想把它变成你要的数组,比如$feed就是上面的查询返回的数据,那么只需要 $feed->toArray()就可以做到。如果我们能知道表的字段,我们就可以直接把查询出来的数据当成对象成员的形式读取,比如$feed->feed_id或者$feed->cTime,也可以直接把这个对象传递给foreach来对属性进行遍历,由此看出,新的ORM对数据处理我们无需像以前那样对数组操作,但是我们可以对遍历等在以前的基础上不变。
    当然,具体的更多用处,可以查询Laravel框架官方文档,再举一个ORM中关系的例子。
public function phone()
{
    return $this->hasOne(‘Phone‘);
}
    在上面的方法中定义一个这样的方法,我们一对一的关联了Phone这个模型,$data = Feed::find(1)->phone 我们就可以得到phone主键feed_id和feed表相同的值的表对象。是不是很方便?
    最后再来说一点controller上面的事情把,在TS中封装了一个叫做“TS\Base\NoneController”的基类,在你的控制器下,定义一个叫做“App\<app name>\Controller\None”的控制器类,继承这个NoneController对象,那么,你应用下访问到了不存在的controller的时候就会重定向到这个controller。所以,你可以用这个东西拓展出很多意想不到的方法。

时间: 2024-09-29 12:58:10

ThinkSNS开源社交系统基础技术要点的相关文章

开源社交系统ThinkSNS V4更新播报!

现行系列为ThinkSNS V4(第四代):第五代产品ThinkSNS+.本次开源社交系统ThinkSNS V4,新增.优化修复内容如下.在这里除了鸣谢我们的程序员,还要感谢我们忠实的粉丝的支持! ThinkSNS简介 ThinkSNS(简称TS),是智士软件旗下的开源微博.社交系统,含微博.论坛.资讯.频道.商城.活动.定位.找人.直播.问答等一系列功能.采用PHP+MySQL技术,核心(微博.用户系统)+多应用+多插件的产品模式.拥有web.Iphone APP.Android APP以及H

开发交易所钱包区块链im通信社交系统app技术公司

火币,是众所周知的一流交易所,前天一篇关于"火币李林的张颖时刻"报道火币创始人李林的分享.其中有谈到火币集团未来的布局以及战略规划.值得关注的一个点是:火币在未来的重点是交易所.钱包以及im的服务,由此看来未来的一波交易所已经不能满足人对区块链资产的行为轨迹,储存,社交,支付也慢慢区域常规化.有人说,开发交易所是前提,为会员资源群体增加黏性,形成闭环生态圈,构建全局的交易网络系统.钱包为储存,其实像现在的市场,钱包是为最火热的时候,熊市,交易流动性弱一些,钱包就是多人最好的选择.Im是

sns社交系统ThinkSNS+ 更新至V0.8.2,新增圈子功能

sns社交系统"ThinkSNS+"于7月15日发布了V0.8.0,含开源版本web+H5,及Android APP和iOS APP客户端. V0.8.2版本将于7月29日(本周六)晚20点之前发布,主要新增圈子功能. 智士软件旗下开源社交系统ThinkSNS即将进入10周年,推出并行两代系统ThinkSNS V4和ThinkSNS+,以专业易用的技术源码输出,驱动互联网社交软件建设及创业,使用ThinkSNS改造或革新你的网站·APP·微信站点,将会是可靠软件产品选型趋势. 现行系列

【社交系统ThinkSNS+研发日记三】基于 Laravel Route 的 ThinkSNS+ Component

[社交系统ThinkSNS+研发日记系列] 一.<ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1> 二.<基于 Laravel 开发 ThinkSNS+ 中前端的抉择(webpack/Vue)踩坑日记> 在前面,我介绍了拓展类型,分别有 plus-compnent 和 plus-plugin 两个,这里重点讲以下如何实现 plus-component 的. plus-component 是什么 就如同名字一样,plus 代表的是 Thin

社交系统ThinkSNS+安装部署演示

ThinkSNS(简称TS),一款全平台综合性社交软件系统,10年来为国内外大中小企业和创业者提供社交化软件研发及技术解决方案.目前有ThinkSNS V4.ThinkSNS+两个并行系统. ThinkSNS一直不断优化,持续更新,旨在为大家带来更好的系统体验,能够更快更好地应用到商业化.企业化等多样化的软件项目中,加速你的开发进度,减少研发时间周期. ThinkSNS社交系统主要功能有:微博(朋友圈).即时聊天.直播.论坛.资讯.CMS.活动.频道.圈子.问答.打赏等主流社交功能应有尽有. T

社交系统ThinkSNS+在研发过程中,如何做到 Laravel 配置可以网站后台配置

什么是ThinkSNS+ ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案. 本文分享下利用 Laravel 的 Bootstrapping 达到网站后台设置 laravel 配置. 需求场景 首先,ThinkSNS+ 作为一个用户可以使用的「社交系统」和开源网站程序一样拥有后台,有一些配置,Laravel 是要求写在 /config/*.php 的配置文件中的,例如 app.name.app.debug 等信息的配置,以及 Jo

Laravel入门及实践,快速上手社交系统ThinkSNS+二次开发

[摘要]自从社交系统ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门. 温馨提示: l 本文纯干货,文字和代码居多,且适合零基础Laravel学习者: l 本文会新建一个名为 blog 的 Laravel 程序,这是一个非常简单的博客. 本文主要内容: · 新建 Laravel 程序,如何连接数据库: · Laravel 程序的基本文件结构: · MVC(模

如何做到 Laravel 配置可以网站后台配置【社交系统ThinkSNS+研发日记四】

距离上一次分享差不多一周了,本文分享下利用 Laravel 的 Bootstrapping 达到网站后台设置 laravel 配置. 需求场景 首先,ThinkSNS+ 作为一个用户可以使用的「社交系统」和开源网站程序一样拥有后台,有一些配置,Laravel 是要求写在 /config/*.php 的配置文件中的,例如 app.name.app.debug 等信息的配置,以及 Jobs 的驱动配置,广播系统的配置等,我们都搬到了网站后台,用户安装后可以不用修改配置文件的情况下镜像配置. 如何覆盖

软件开发技术基础复习要点

软件开发技术基础复习要点 1.生存周期: 指一个软件从提出开发要求开始,经过需求分析.设计.制造.调试.使用.维护,直到软件产品被淘汰为止的整个过程. 2.简述软件工程的基本原理: 用分阶段的生命周期计划严格管理: 坚持进行阶段评审: 实行严格的产品控制: 采纳现代程序设计技术: 结果应该能清楚地审查: 开发小组应小而精: 承认不断改进软件工程实践的必要性. 3.简述产生软件危机的原因和解决办法: 原因:开发软件所需的高成本与软件产品的低质量之间存在尖锐的矛盾,致使软件开发陷入循环之中,即研制软