zoukankan      html  css  js  c++  java
  • PHP框架:climbPHP 首发

    climbPHP


    github:https://github.com/sskyy/climbPHP

    这是一个基于codeIgniter的扩展框架,但是主体部分可以非常容易的移植。你想试一下的,只要配置一下数据库连接就行了。

    它想表达的,更多的是一种代码架构方式。并非几个简单地类库。

    以下是重点。

    更好的模块化


    我所指的模块是module,而不是model。model是业务模型,我们能用它进行一定的业务逻辑操作。而模块应该是系统的组成部分,应该实现三个主要特性: 1.能根据系统事件动态地做出响应。也就是在系统级别应用 “观察者模式” 。 2.能够使用系统统一的规则进行通信。climbPHP使用的是全局的广播。 3.能够根据一定的规则构建出优雅的层次结构。

    climbPHP的解决方案:
    1.对于 “1” “2” 两点来说。
    climbPHP使用的是建立一个全局的事件对象。所有模块都可以通过这个事件对象进行 “抛出” 和 “监听” 。基础模块只需要在可能出现扩展的地方抛出合适的 “事件” 即可,除了自身逻辑以外不需要再知道其他模块的处理细节。这里注意,执行事件对象的“抛出”操作是可以得到返回值的,这个返回值代表着外界的响应。这使得在有必要的情况下外界可以在一定程度上干预模块内的操作。另外,全局事件也是一个模块。

    2.要构建出优雅的模块层次结构,需要实现 3 个要点:
    [1] “被依赖”的模块有能力知道“依赖”它的模块何时被加载。并有机会操作“依赖”的它的模块;
    [2] 要能实现依赖关系的自动加载;
    [3] 模块能动态的按需获取其他模块,同时要求这种获取方法是不能污染全局变量的。
    climbPHP实现了一个模块加载器(也是一个模块),能根据模块申明的依赖关系进行自动加载。加载的过程中也实现底层模块获取上层模块的能力。屏蔽了CI的全局对象,所有资源统一交由模块管理器来管理。

    广播系统


    “广播系统”实际上就是通过“事件对象”实现的。任何模块既可以使用全局的事件对象,也可以在模块内实现自己的“事件对象”。

    实体系统


    实体系统 的核心是“实体”和“集合”两个类,除了基本的增删改查外,主要的特点有:
    1.实体实现了嵌套,的属性也可以是另一个实体。“集合”实现了“排序”、“筛选”等功能。
    2.实体和集合都通过组合的方式获取 “与数据库的连接” ,它只要求用户的数据库连接类实现了约定的接口。用户可以使用任何数据库,甚至混合使用。
    3.对于mysql用户。climbPHP通过一个小型ORM和一个表数据入口类来帮助使用实体类,并且可动态拆卸。

    问题反馈


    有任何问题或者你想加入climbPHP的开发都请email给我,谢谢。skyking_H@hotmail.com

    使用教程


    文件中有一个用户登陆的示例,使用了大部分基础特性。可自由查看。 详细的教程我会马上更新。

    尴尬。之前忘提交代码到github了。现在已提交。

  • 相关阅读:
    CentOS离线状态下安装Python3.7.0
    SQL练习题
    ajax的工作原理
    总结 XSS 与 CSRF 两种跨站攻击
    转css中文英文换行、禁止换行、显示省略号
    vue项目的搭建
    转axios 的应用
    rem布局计算(移动端,pc端有兼容性)
    rem
    彻底弄懂css中单位px和em,rem的区别
  • 原文地址:https://www.cnblogs.com/sskyy/p/2679970.html
Copyright © 2011-2022 走看看