zoukankan      html  css  js  c++  java
  • LotusPhp学习一:初识LotusPhp

      接触LotusPhp是从淘宝开放平台开始的,最早是为自己的网店做一个商品添加的程序,最初是用的浪子的TaoApi,但是这个程序基本不更新了,加上淘宝开放平台总是变来变去,官方的SDK默认包含的就是LotusPhp。

      学习LotusPhp是有一定难度的,没有文档,只有一些组件的范例,感觉更像是一些类库的集合,而不像一个框架,缺乏一个统领整个类库的范例,虽然example里有一个通讯录的范例,但是没有用到所有的组件,比HelloWorld强点而已,对于其框架的理解和运用感觉还是用处不太大。

      不过我还是比较喜欢这个框架的,这个框架是最初淘宝的员工覃健祥开发的,后来一群爱好者加入了开发小组,总体来说在开源社区里关注度比较低,比较冷门些。不过瑕不掩瑜,LotusPhp在我看来,是一个比较优秀的框架,其中一些亮点如下:

      1.各个组件相互独立,你可以自行丰富LotusPhp的组件到自己的项目中。很多框架的组件关联度比较高,基本上是牵一发而动全身,一般是很难对框架做修改的,你可以用,但是符合不符合你的项目要求,那就是另外一码事了。LotusPhp很好的避免了这样的问题,在设计的时候就是按独立的类库来进行设计构思,最后用胶水代码Lotus.php来进行粘合,形成完整的框架。你可以独立修改某个类库来更适合自己的项目需求,也可以用一些比较好的类库,甚至是其他的一些框架的,比如ZF,Symfony等这些设计上也相对独立的类库直接拿来补充丰富LotusPhp的组件。

      2.LotusPhp可以和其他php框架搭配使用,用LotusPhp的Autoloader直接加载和缓存其他类库即可,而且还不用再费心的调用路径之类的了,不过这个不是我学习LotusPhp的目的。

      3.Db组件支持多种数据库,支持多数据库,支持主从数据库,在数据库的操作上,LotusPhp可谓是一枝独秀。目前LotusPhp支持MySql、SQLite、PostgreSQL这三种常用的数据库,当然你可以按照Db组件的规范添加其他数据库的支持。使用LotusPhp的Db组件在系统平滑升级上会有优异的表现,起码不用到了瓶颈再去换框架或者再去重新设计构架重写代码,只要升级系统构架,添加多数据库的支持即可,改动很小。值得称道的一点就是Db组件的SqlMap,这个可以集中管理所有的Sql,便于DBA进行管理和升级,而不是不停的在源代码中翻Sql语句,利于大公司中不同的岗位协作。想着DBA改下Sql语句,性能就大幅提升的感觉一定很爽吧!

      4.优良的角色安全机制也是一大亮点,用户可以具备多种用户角色,可以根据需要进行角色组合。比如前台是普通用户,后台是编辑,设置两个用户角色就够了。

      5.缓存支持也表现优异,目前支持Apc、EAccelerator、Memcache、Memcached、Xcache以及文件缓存,可以根据需求进行配置升级。

      6.Autoloader是LotusPhp最重要的一个组件,也是他的非常重要的一个优点。只要声明了Lotus组件,就可以自动加载所有缓存的类库,不用担心路径,不用考虑调用的问题,直接使用类库和函数即可。我有很多Php程序员的朋友拿到我写的LotusPhp项目的代码感到无从下手,找不到调用的路径,不知道调用的是哪个文件和类库,是不是很牛逼的啊?O(∩_∩)O哈哈~

      7.升级快速,多数框架因为关联性比较强,所以不太容易大幅度升级。即便升级了,可能和原来的框架兼容性不好,很多老框架写的应用导致没有办法用新框架平滑升级。LotusPhp不存在这个问题,每个组件相互独立,只要某个组件升级了,你就可以升级,而且对象接口在构架的时候就已经规定下来了,基本是框架内部升级,应用内调用没有任何不同,所以使用LotusPhp几天升级一次都不是神马稀罕事。

      不过LotusPhp也有很多自身的问题,是无法回避的,主要有以下几点:

      1.没有文档和完整的范例,对于初学者极其不友好,入门不太容易。LotusPhp开发组的成员貌似都比较忙,抑或是天生不怎么会写文档,框架出了N年了,至今没有一个良好的文档,和比较完整的范例。对于不懂设计模式,没有接触过框架的程序员,学习LotusPhp会比较困难,我就是一行一行注释代码,把所有代码通读了一遍才算入的门。

      2.组件不是很完善,很多需求只能靠自己完善,比如上传组件、邮件、多语言、WebService、搜索等还是需要自己来进行构建。我和开发组沟通过,后续还是会增加诸如搜索,支付等组件的。

      3.个别已有组件功能还不够完善,有的不能满足个性化的需求。比如session组件目前就比较鸡肋,暂时只支持SQLite存储和文件存储,Mysql存储session已经在构建中,不过暂时还没有实现。还有Captcha组件无法实现客户端Ajax验证,因为验证码只能验证一次,验证完就失效,客户端验证了,服务器端就不能验证了,所以暂时客户端没有办法实现验证码的验证。当然其他组件也或多或少存在一些问题,以后的文章中会有表述。

      4.RBAC目前只能通过多角色来实现用户权限的组合,没有办法实现更加复杂的权限自定义,如果要实现自定义权限,想来就得把验证内容存储到数据库中去了,在初始化组件的时候调用验证用户权限,还有种办法,就是放弃RBAC组件,用自己的办法构建用户权限验证方法,然后在MVC中加载。

      5.每个组件都是通过配置文件是进行初始化并规范的,这也制约了LotusPhp在快速更新配置的方式上只能通过FTP或者更复杂的编程方式来实现。这就注定了LotusPhp更适合一些稳定要求高,程序升级频繁的中型程序使用。一些小应用用这个只能感觉不太顺手。

      6.可能还是由于文档的原因,人气始终不高,在一众Php框架中感觉比较冷门,比较非主流一些,社群交流始终不够热烈。作者覃健祥目前在一淘工作,旺旺群里一般都在线,会解答一些关于LotusPhp的问题。

      最后附上一些LotusPhp的资源

      LotusPhp 旺旺群:109954293

      LotusPhp QQ群:273709480

      LotusPhp 谷歌Code Wiki:http://code.google.com/p/lotusphp/w/list  目前已经迁移到Github,不过谷歌上的Wiki上很多组件的使用还是比较有参考价值的

      LotusPhp Github项目:https://github.com/qinjx/lotusphp

      LotusPhp 程序构架:http://www.yylog.net/lotusphp/doc/index.html 该网站站长也是 LotusPhp 开发组成员之一

      LotusPhp 程序构架解读:http://www.yylog.net/lotusphp/api/

      淘掌门:http://www.taozhangmen.net/  这是一个比较完整的开源的LotusPhp项目源码,有很好的参考价值,不过组件也运用的不全

      金海马网上商城:http://www.kinhom.com/  这是LotusPhp开发的一个在线商城,没有开源的代码

  • 相关阅读:
    【BZOJ4448】【SCOI2015】情报传递
    【BZOJ2006】【NOI2010】超级钢琴
    NOIp2018模拟赛四十五~??
    【BZOJ4940】【YNOI2016】这是我自己的发明
    数据迁移—datax
    DG模拟GAP手动处理
    DG问题:ORA-16416: No viable Physical Standby switchover targets available
    管理和维护DG
    DG问题
    DG概念与机制
  • 原文地址:https://www.cnblogs.com/iuyes/p/3056864.html
Copyright © 2011-2022 走看看