首页 | PHP资讯 | 技术专栏 | 资源共享 | PHP培训 | PHP职场 | 图书 | PHP ON WIN | PHP圈子
返回列表 回复 发帖

自写MVC框架Agi PHPMVC(核心)

自写MVC框架Agi PHPMVC(核心)

呃,新用户无法在高级区发文章?

目前开发中的版本:Agi PHPMVC alpha2.2

Alpha 2版所实现的特性以及更新的记录请参阅:http://www.cnblogs.com/janpoem/archive/2008/09/13/1290538.html

截止到Alpha 2.1.2 实现整个框架的核心只有1000行左右的代码,最近很忙,又要顾着看asp.net MVC p5的代码,Alpha2.2的重构进展比较缓慢。这里谈谈Alpha2.2重构的重点和核心的思路,不谈具体的实现,混合使用的设计模式太多,说不完。

目前Alpha 2.1.2 已经完成了3个低成本的站点,平均的开发时间在6天。开发的主要工作量在前端,JS和CSS。

实现RoR式的rest的url风格,apache 通过 .htaccess rewrite,IIS 7通过web config配置rewrite,服务器软件仅仅实现基础rewrite(类Zend Framework - index.php,RoR - dispath.*的分发模式)。

底层

Agi类,面向切面模式,控制整体框架的运行状态,调试点(断点 - 遇到框架可感知的错误时中断输出)。暂时没有回滚控制(HTTP就这么回事,还回哪里去呢?)

Response::instance()负责与MVC对话。

Request::routeMapping()取得url中的controller、action、format以及其他用户自定义的变量。

上层

开发自定义接口通过Agi类进行上层暴露。

Languages Packages

MVC部分

实现完整独立的MVC模式,易于扩展,易于移植,易于发布(这个贼重要)。

Controller仅仅是一个发号司令的指挥官。

实现RoR,MonoRails中的layout,view的模式。仅仅实现RoR有价值的方法(RoR中大量罗嗦无用的方法),php在某些方面的思路比RoR更清晰。


Model不仅仅针对数据,具体的编程主要在Model完成(plugin,便于同框架的环境内,快速在不同项目中移植,拷贝php文件到Model目录就可调用这个方法集合了,.net的发布模式是很好的,不过他要全引用编译,咱不用。同时,假如OOP基础好,一个好的Model也可很容易被移植非同框架的环境内。)。

数据Model仍旧使用PDO(考虑数据库适用性)。

数据M - V,主要是alpha2 的Form的继续扩展,数据Model->edit('update', 操作对象, $fields),这样V的代码能更大的精简。

其他

Helper目前仍在考虑中,估计不会在Alpha 2.2中实现。

Cache也不会再Alpha 2.2中实现,因为仍在收集和整理Cache的思路。目前考虑,Cache按如下细分:
  • 数据片段缓存
  • 全数据缓存(有条件)
  • 静态页面缓存
  • 综合类缓存(Widget缓存,View缓存、全页缓存)

我目前的思路是,Cache作为框架提供的一个Model,但不内嵌到框架核心中,保证框架本身的精简。

一个人维护这个框架感觉有点累,事情实在太多,彻夜不眠的苦熬。(目前团队4个人,Agiers Group,但PHP方面只有我,另外一人负责提供参考和专业意见。)

暂时不提供源代码,见谅见谅。

[ 本帖最后由 janpoem 于 2008-10-15 06:21 编辑 ]
2

评分人数

兄弟,顶你!!

TOP

返回列表