PHP框架:climbPHP 首发
climbPHP github:https://github.com/sskyy/climbPHP 这是一个基于codeIgniter的扩展框架,但是主体部分可以非常容易的移植。你想试一下的,只要配置一下数据库连接就行了。 它想表达的,更多的是一种代码架构方式。并非几个简单地类库。 以下是重点。 更好
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了。现在已提交。
推荐阅读
-
php ci框架中加载css和js文件失败的解决方法_PHP
-
Codeigniter框架的更新事务(transaction)BUG及解决方法_php实例
-
国产PHP开发框架myqee新手快速入门教程,myqee入门教程
-
oauth - 有没有集成多家第三方平台的用户管理php,python库/微框架?
-
PHP开发框架Yii Framework教程(31) Zii组件-DetailView示例
-
列举PHP的Yii 2框架的开发优势_PHP
-
Yii Framework框架获取分类下面的所有子类方法_PHP
-
Yii框架调试心得--在页面输出执行sql语句,yiisql_PHP教程
-
国产PHP开发框架myqee新手快速入门教程_php实例
-
初学PHP,用哪种框架好