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的所有贡献者!
下一篇: PHP 多个mysql连接的问题
推荐阅读
-
如何在 CentOS 7 / Ubuntu 15.04 上安装 PHP 框架 Laravel
-
codeigniter CodeIgniter php mvc框架 中国网站
-
Symfony2框架学习笔记之表单用法详解,symfony2学习笔记_PHP教程
-
搭建自己的PHP框架心得(二),搭建php框架心得
-
PHP QeePHP框架创建控制器出错?解决思路
-
解析php框架codeigniter中如何使用框架的session
-
CI框架源码阅读---------Model.php_PHP教程
-
php框架给小弟我们带来了什么,或者php给小弟我们什么
-
开发者不能不知的PHP框架深度解析
-
使用Yii框架中遇到的三个相关问题_PHP教程