Lotus PHP框架介绍(淘宝 LotusPHP SDK)

LotusPHP主要做了这几件事儿(分组件):

Lotus ToDo List

  1. Router和Url组件是一对,一个根据routr规则parse进来的url,一个根据route规则生成出去的url,共用同一个route rule
  2. Lotus存储三剑客可进一步抽象:多条操作(DB,Search)和单条操作(DB,Cache)
  3. ObjectUtil整合到lotus里面去,只有第一次singleton("LtCaptcha")时才初始化LtCaptcha组件
  4. DB的master/slave, queryType做成类常量
  5. DbHandle->query()增加queryType参数,lotus暂时parse不出来的queryType允许用户自己指定
  6. DbConnectionManager:在insert()和startTransaction()时将该缓存资源锁定,用完才释放,防止多线程操作产生脏数据
  7. Autoloader的tool借鉴Autoloader->parseLibNames(),用tokenizer查找include/require语句
  8. 将configHandle->get()的结果缓存为局部变量

LotusPHP Google地址:http://code.google.com/p/lotusphp/wiki/lotus_todo

Lotus component 开发应该遵循的原则

总的目标:所有组件都有一样的原则,互相不知道其他组件的存在

  1. 不和其他组件耦合,开发某个组件的时候,不能假定(或要求)其他组件存在
  2. 类名唯一
  3. 尽量回避static属性和方法(也有例外,ObjectUtil类就有两个static方法),要允许用户继承,须实例化才能运行.
  4. 提供init()方法,初始化必要的资源
  5. 使用简单,少用getter/setter方法
  6. 配置单独放在xxxConfig类里,xxx->conf = new xxxConfig;
  7. 命名空间,组件类都以Lt开头,如class LtCache
  8. component class本身并不实现singleton模式(就是说component不提供getInstance()之类的方法),更不能依赖singleton,用户可以用ObjectUtil::singleton()来实现所有类的singleton模式:ObjectUtil::singleton("ComponentName")
  9. 若组件由多个类组成,不处理各类之间的包含关系,不用include/require,文件包含由用户自行解决,例如使用lotusphp的autoloader,或者直接include/require进来
  10. 组件的php文件只有class定义,没有自动执行的语句.当这些文件被include时,除了定义这些类,不会发生其他动作(比如输出字串,发送header,创建文件,变量赋值等等)
  11. 不依赖绝对路径,可配置
  12. 涉及界面输出的地方不能写死,允许用户自定义,比如分页类输出的html是什么风格,应该让用户自定义
  13. 提供simplest, work with lotus两种示例

Comment by project member gxd...@gmail.com, Aug 31, 2009

还是要考虑框架的定位,是易用还是高效,是追求高可配置型,还是追求集中配置。

建议基于php5.3开发,有很多新的特性可以使用,哈哈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值