免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: dualface
打印 上一主题 下一主题

[学习] CodeIgniter 走马观花 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-09-17 10:43 |只看该作者
我曾经在两个项目中用了所谓的mvc,得到的经验是:
1、极其差的ide体验
2、徒然增加了好多代码
3、view拿结果比较麻烦
4、调试麻烦

现在我自己的模式是:
入口简单的初始化db类和配置类,读入配置文件,对get,post,cookie,server进行简单stripslashes处理(如果magic_quotes_gpc==on)启动router。router负责根据规则调用相应的url_parser,解析url,确定'所谓的'controller、action以及参数。我将传统的controller改为module,不负责任和任务处理,只是一个目录。具体逻辑实现在各个action文件里。router来include action文件。model只描述数据本身,提供对数据操作的接口,由action来具体操作model中的数据。没有view,直接在 action 里面 include进来模板。在整个过程中,最终需要呈现的数据始终跟action在同一个scope下。
这样,在开发的时候我只要:
写model,描述好数据
在action文件里直接做处理,实例化model,对其进行操作
在呈现页面直接到model拿数据

论坛徽章:
0
12 [报告]
发表于 2006-09-17 11:02 |只看该作者
"调试麻烦"---这点我也同意.哈哈
你的模式也不错.感觉"框架还是自己的好"

论坛徽章:
0
13 [报告]
发表于 2006-09-17 11:13 |只看该作者
原帖由 axgle 于 2006-9-17 10:26 发表

就目前我的经验来看,MVC好处在于"分离"带来的好处.
以前html比较简单,现在搞复杂了:html+css显然比html复杂.
但html+css相比以前"html的结构与显示混合",能够带来更大的"灵活性&quo ...


我不认为在典型的web开发中可以真正的用经典mvc模式。首先,要想view只和model有联系很难做到,其次由于web呈现的信息不是那么单纯,大多数后期情况都是牵一发而动全身,如果固执到把涉及到数据的业务处理放到model中并且view只从model拿数据,由model来通知view,那更是噩梦。mvc真正的前提是需要同样的数据来提供多个视图。
回到框架上。框架就是为了简化开发,如果一个框架用起来比处理业务还难,那就不值得用。以我的经验来讲,把需求直接转换成代码是最快速的方式,而尽量不把精力放到理顺各种关系上。

论坛徽章:
0
14 [报告]
发表于 2006-09-17 11:24 |只看该作者
关于缓存部分,像IE这个的浏览器,如果吃到  Last-Modified: 标记, 下次请求都会发送一个 If-Modified-From: 头标记,让您的服务器收到请求时针对这些标记作出特殊处理。。。(当然这只针对同一个user刷新页面时有效,经测试很遗憾在 squid 内建的 cache 中不会发送任何检查 cache的标记,而只是直接到 Expire: 指定的时间到。

所以大量的 cache 设计其实都没有好的机制判断更新时间,而是傻傻的估算缓存,比如5分钟这样。。。。而还有一个严重不足,基本上采用 output buffer 控制,把所有输出保存下来,这一点不足在我发的 my_SmartTEmplate 里中有详细的解析和一个勉强的解决方案。

所以在此建议,尽可能在你的程序中发出 Last-Modified: 标记 (即当前页面URL含各类参数组合成的最后更新时间, 比如 BBS的贴子阅读,那么Last-Modified: 就应该是本贴的最后回复时间), 在程序中判断 If-Modified-From: 进行比较,如果没有更新这时程序直接输出一个  304 的头,然后结束程序,而不必执行后面的程序...

论坛徽章:
0
15 [报告]
发表于 2006-09-17 12:52 |只看该作者
原帖由 yarco3 于 2006-9-17 06:56 发表
呵呵...LZ, 我可是CodeIgniter的绝对支持者啊...
我知道LZ是一定会认真去分析它的...对于LZ的专业水准, 偶一致认可.

另外LZ认为:

但为什么LZ又提倡大家用FleaPHP, 而不是CakePHP?
因为FleaPHP更简便, 和有 ...


呵呵,我都说了这是我的一家之言哦。

使用体验是一个很感性的东西,比如你就是 CI 的绝对 Fans,因为你喜欢 CI 的风格或者其他东西。而某个人可能是 ZF 的绝对 Fans,因为他喜欢 ZF 那种全 OO 的架构。所以说我没有讨论这些内容,俗话说:青菜萝卜,各有所好。

但是,如果一个框架本身具有糟糕的实现,那么对应用程序的影响迟早会显现出来。这里就要牵出我们对 PHP 应用程序能够达到多大的复杂度这个问题的不同看法了。

从我个人做过的实际项目看,最复杂的项目是这种样子:“不算 FleaPHP 自身在内,应用程序的核心有 100 多个类,6700 多行代码。如果算上前台页面和模版,那么就有 500 多个文件,34000 行代码以上。”

对于这个规模的应用程序,我不但要考虑开发效率,还要考虑运行效率。而且一个复杂到一定程度的应用程序,需求的变动可能性也越大。这就要求框架本身能够为应用程序提供足够灵活的服务。

CI 1.4 版我还没仔细看,但了解新增的 hook 的主要内容。这些 hook 实际上就是弥补 CI 设计上的缺陷。因为 CI 是一高度耦合的系统,所以要进行扩展就显得非常困难。我估计 CI 出到 2.0 时,整体架构会有巨大的变动。

最后,对框架某个特征的取舍,完全是看开发者个人喜好,不可能有统一的标准。就像你不需要自动化的数据表关联处理一样。

论坛徽章:
0
16 [报告]
发表于 2006-09-17 12:56 |只看该作者
原帖由 geel 于 2006-9-17 11:13 发表


我不认为在典型的web开发中可以真正的用经典mvc模式。首先,要想view只和model有联系很难做到,其次由于web呈现的信息不是那么单纯,大多数后期情况都是牵一发而动全身,如果固执到把涉及到数据的业务处理放到 ...



恰恰相反,正是在 Web 应用程序出现以后,才有了 MVC 模式的真正实现。

而且,MVC 模式是一系列略有不同的模式,针对桌面 GUI 应用程序、Web 应用程序,使用的 MVC 模式都是不同的。像绝大部分 Web 应用程序使用的都是称为 Passive(被动)MVC 模式(http://www.phpwact.org/pattern/model_view_controller)。

而且 MVC 中,M 并不就是数据处理。M 是提供服务的接口,至于服务的实现,有可能在 M 中实现,也有可能是委托给其他层次实现。

论坛徽章:
0
17 [报告]
发表于 2006-09-17 12:57 |只看该作者
原帖由 geel 于 2006-9-17 10:43 发表
我曾经在两个项目中用了所谓的mvc,得到的经验是:
1、极其差的ide体验
2、徒然增加了好多代码
3、view拿结果比较麻烦
4、调试麻烦

现在我自己的模式是:
入口简单的初始化db类和配置类,读入配置文件,对 ...



你这就是 MVC,只不过实现略有差异而已。你可以看看 http://www.phpwact.org/pattern/model_view_controller 连接的内容。

论坛徽章:
0
18 [报告]
发表于 2006-09-17 13:00 |只看该作者
原帖由 james.liu 于 2006-9-17 10:18 发表
给想要学习框架的人的几点建议:

你对业务有多了解? 你对php有多了解? 你对框架的特点有多了解? 你想要学习的框架和你的业务如何结合?  

如果你没思考过这些,我觉得还是等你考虑清楚了再看。


框架只对 一些人有用,而不是所有人。

对新手百害无益。  



“对新手百害无益”这种话,太绝对了。假如你用的是 Java、.net,那么你一开始学习就接触到各种各样的框架了。Java 的框架之多自不必说,而像 ASP.NET 这种,在运行环境和实现上就把框架融入其中了。

论坛徽章:
0
19 [报告]
发表于 2006-09-17 13:03 |只看该作者
原帖由 dualface 于 2006-9-17 13:00 发表



“对新手百害无益”这种话,太绝对了。假如你用的是 Java、.net,那么你一开始学习就接触到各种各样的框架了。Java 的框架之多自不必说,而像 ASP.NET 这种,在运行环境和实现上就把框架融入其中了。



新手要学的东西太多了,,,语言,应用知识,系统知识,,,我觉得还是基础打好。


一开始就用框架,,也许会在编程上节约点时间,也许会知道很多新名词,,,,但是如果碰到问题,如何解决,深入会碰到很多问题。

我相信一句话: 万变不离其宗。

论坛徽章:
0
20 [报告]
发表于 2006-09-17 13:24 |只看该作者
原帖由 james.liu 于 2006-9-17 13:03 发表



新手要学的东西太多了,,,语言,应用知识,系统知识,,,我觉得还是基础打好。


一开始就用框架,,也许会在编程上节约点时间,也许会知道很多新名词,,,,但是如果碰到问题,如何解决,深入会碰到 ...



这点我认同,没有基础知识肯定不行。

但是新手一定不能用框架,太绝对了,就像你学 ASP.NET 的时候,同时就融入框架了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP