锁定老帖子 主题:论PHP框架设计模式及MVC的缺陷
精华帖 (2) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-23
你可以看看 QEEPHP框架 或者 我写的 xser php 框架
|
|
返回顶楼 | |
发表时间:2010-12-23
vb2005xu 写道 你可以看看 QEEPHP框架 或者 我写的 xser php 框架
有什么特别之处呢? |
|
返回顶楼 | |
发表时间:2010-12-23
dwangel 写道 baiyuxiong 写道 我知道控制器可以调用类库或者调用别的控制器,不过这也没什么优势,在视图里面没办法调用别的控制器。
看来楼主是觉得MVC在代码重用上不方便。 楼主是不是用过 asp.net开发项目,习惯了那里的页面控件里也嵌入逻辑的模式。 这个只是开发时思考习惯问题。 楼主是想从最终页面 看有几个视图,然后根据视图考虑显示一个完整页面需要执行哪些逻辑。 这个基于一个前提,这个View是跟逻辑密不可分的。 如果这样的话,codeigniter 我不熟,但刚看了文档,可以把逻辑写成在library里的一个类,由这个逻辑负责调用相应的视图。 abstract public class ViewLogic{ protected $controller; public __constructor($controller) { $this->controller = $controller; } public function execute() { doTask(); $this->controller->loadView($this->getViewName()); } abstract protected function doTask(); abstract protected function getViewName(); } public class NewsViewLogic { public function getViewName() { return "NewsView"; } public function doTask() { ..... } } 在控制器里仅仅是调用library。 $this->load->library('NewsViewLogic', array('controller'=>$this) ); $this->newsviewlogic->execute(); 你有几个页面要用NewView,就copy几个调用字段就行。 甚至可以这样: $logics = array("NewsViewLogic", "ddddLogic"); foreach($logics as $logic) { $this->load->library($logic, array('controller'=>$this) ); $logicName = strtolow($logic); $this->$logicName->execute(); } 做个基类,把循环部分放到公用方法也行。 每个页面的Controller也就是配配 $logics 了。 以上代码只是示意,未经测试。 嗯,这种做法不错,学习了。 我发现我写程序总是用面向过程的思想写面向对象的程序 这个思维习惯真难改。 |
|
返回顶楼 | |
发表时间:2011-01-18
当前的php框架,都是喜欢大而全,而不是只提供一个基本的架子(基础)。
前些日子,接手一个项目用了ci,感觉不过如此。 我认为M层就应该是与框架无关的,但是很多php框架偏偏不! 你的struts框架的service层只能被特定的C用吗?当然不是了。 当然,写个php 框架也不是什么难事,可以自己试试,对mvc应该会有更深的了解! |
|
返回顶楼 | |
发表时间:2011-01-18
dwwind 写道 当前的php框架,都是喜欢大而全,而不是只提供一个基本的架子(基础)。
前些日子,接手一个项目用了ci,感觉不过如此。 我认为M层就应该是与框架无关的,但是很多php框架偏偏不! 你的struts框架的service层只能被特定的C用吗?当然不是了。 当然,写个php 框架也不是什么难事,可以自己试试,对mvc应该会有更深的了解! 一看就知道是PHP新手 |
|
返回顶楼 | |
发表时间:2011-01-19
我们是将model层分为两层:DAO和SERVICE
控制器调用自己的SERVICE但是不同的SERVICE可以相互调用。 这样控制器就能通过SERVICE调用其他的服务了! |
|
返回顶楼 | |
发表时间:2011-01-19
vb2005xu 写道 dwwind 写道 当前的php框架,都是喜欢大而全,而不是只提供一个基本的架子(基础)。
前些日子,接手一个项目用了ci,感觉不过如此。 我认为M层就应该是与框架无关的,但是很多php框架偏偏不! 你的struts框架的service层只能被特定的C用吗?当然不是了。 当然,写个php 框架也不是什么难事,可以自己试试,对mvc应该会有更深的了解! 一看就知道是PHP新手 :-) 不错!我写php尚不到3年。也用过一些框架。 每个人对框架的理解可能不一样。自己用着顺手的才是最好的。 日前也曾经写了个:http://rare.sinaapp.com. 呵呵,现在php框架已经快到了一个泛滥的程度了。 |
|
返回顶楼 | |
发表时间:2011-01-20
套用r大大那句话: 使用rails或者PHP类rails框架的 基本都是充血模型 想瘦都瘦不下来
使用 java ssh 基本就是 贫血模型 你想充也充不了 PHP的 怎么简单就怎么来好了 只要能 代码看的舒服 就怎么来 干嘛自己整那么多规矩 |
|
返回顶楼 | |
发表时间:2011-01-31
dwwind 写道 vb2005xu 写道 dwwind 写道 当前的php框架,都是喜欢大而全,而不是只提供一个基本的架子(基础)。
前些日子,接手一个项目用了ci,感觉不过如此。 我认为M层就应该是与框架无关的,但是很多php框架偏偏不! 你的struts框架的service层只能被特定的C用吗?当然不是了。 当然,写个php 框架也不是什么难事,可以自己试试,对mvc应该会有更深的了解! 一看就知道是PHP新手 :-) 不错!我写php尚不到3年。也用过一些框架。 每个人对框架的理解可能不一样。自己用着顺手的才是最好的。 日前也曾经写了个:http://rare.sinaapp.com. 呵呵,现在php框架已经快到了一个泛滥的程度了。 嗯,也许自己写的才是最顺手的…… 回头研究一个自己的。 |
|
返回顶楼 | |
发表时间:2011-04-22
最后修改:2011-04-22
昨天写程序遇到某些问题 想了一宿 突然想通了 之前是我太浅薄了 呵呵 收回之前所有的话 我就是个新手
thanks楼主 你的这个 视图驱动 解决了 我长期困扰的一个问题 呵呵 我要好好想想 然后改善我的 sfw .. 这个问题 我之前也遇到过 ... 在qee的里面 视图层 在一定程度上使用 控件 也解决了这个问题 不过你这种 视图驱动 开发的 建议 很好 , 我要好好想想了 谢谢了啊 |
|
返回顶楼 | |