Thinkphp,qeephp,cakephp,zendframework,symfony
对比
直接插入:
demon认为一个优秀的框架并不是完成仅有的几个业务流,它应该是可扩充的,是富有的,是集合,是离散。简单说它是万物的矛盾体,既游离又聚合。
体积切入:
框架 体积
cake_1.2.2.8120 2.01MB
qeephp-2.1.2116 993KB
ThinkPHP 1.5 947KB
ZendFramework-1.7.8-minimal 16.1MB
symfony 1.2.5 11.1MB
备注:以上都是删除不必要的文件比如doc,test等文件后的最小体积
粗略的认为:
国内框架普遍比较小,国外普遍比较大-。。-在这里不能简单的认为体积小为好。
目录结构:
thinkphp
qeephp 左边是thinkphp 的目录结构,demon粗略的看了看: common下放了运行时,函数库,通用性的文件 lang估计是核心内部的语言 lib/org下是一些常用工具: date,io,net,rbac,text等 lib/think下为核心,主攻mvc流程 plugin下为适配插件 总结: 实在是太小了,一眼便看穿了全部 demon从初学者的角度来分析thinkphp的流程: 初始化加载必要的文件,common,core下的几个类, 就可以调用new app(),然后嗲用init运行了。 猜测app里实例化diapatcher然后调用类似run的方法, 开始动作routing。
粗看qeephp的目录结构,给人非常舒服,层次很清晰,
每一个文件夹对应某个功能域。
并且每个文件下都有与之对应的exception.
command命令行快捷方式
特别要指出,
extend下的behavior是在模型上捆绑行为的。
可以说是decorate模式。
在qeephp中可见运用了一些设计模式来满足可扩充性,
单一职责。
qeephp的启动方式。。一时还找不出来。
这是由于单一职责的好处。
参考了官方的文档:
看:
// 获得应用程序启动信息
$app_config =
require(dirname(__FILE__) . '/../config/boot.php');
// 根据启动信息中的设置载入 QeePHP 框架和应用程序对象
require $app_config['QEEPHP_DIR'] . '/library/q.php';
require $app_config['APP_DIR'] . '/myapp.php';
// 构造应用程序对象,并启动 MVC 模式
echo MyApp::instance($app_config)->dispatching();
很舒服。。。不过精简的还不够,特别是myapp.php和以下
MyApp::instance($app_config)->dispatching();的关系很不协调。
(我想作者的意图是想多入口的多应用程序以及部署模式,
但入口并不应该感知文件名,而是感知索引)
比如:
// 根据启动信息中的设置载入 QeePHP 框架和应用程序对象
require $app_config['QEEPHP_DIR'] . '/library/q.php';
// 获得应用程序启动信息
$app_config = qee_App::getConfiguration("myapp");
// 构造应用程序对象,并启动 MVC 模式
qee_App::createInstance($app_config)->dispatching();
如此不是更好。没有烦琐的手动载入,只要知道要运行哪个app名字就可以了
总结:
可以说qeephp从目前的目录结构看,是可以研究一下的。当然还存在一些问题。
综合看qeephp在目录结构上比thinkphp好
cakephp
cake的目录很有意思:一个空的app项目目录。
然后核心就4个cache,controller,model,view
真是mvc啊。。。
很简单,太简单,cakephp提供cli 来初始化一个基本的
mvc application。所以至于启动方式也类似于qeephp。
zend
zend不得不用缩略图了,实在太多太全太大。
zend明显的很清楚,比qeephp,symfony都清楚,并且
很全。
特点就是文件夹可以单一的完成某些任务,这使得所有
类都可以单独
剥离出来,外头的php文件是实现封装,而对应的
directory为类包含
的类,运用组合模式结合起来。
zend的启动方式不熟悉。但应该不会差。
symfony
symfony 的结构也相对清晰,但其粒度比zend更细腻。
它将controller,response,request 都分开。
但从整体行来说逊色于zend,不够全,也不够离散。
symfony的某些组件,存在一定的依赖性。
总结:
评判标准:
1。目录层次是否清晰
2。目录传达的意思和其内在的类是否一致‘
3。目录结构一致性
从目录上来说zend>symfony>qeephp>cakephp>thinkphp 类图
thinkphp
三亿文库3y.uu456.com包含各类专业文献、高等教育、中学教育、行业资料、专业论文、外语学习资料、生活休闲娱乐、应用写作文书、文学作品欣赏、实测thinkphp,qeephp,cakephp,zendframework,symfony流行框架性能 78等内容。