论坛首页 编程语言技术论坛

论PHP框架设计模式及MVC的缺陷

浏览 17141 次
精华帖 (2) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-12-23  
你可以看看 QEEPHP框架 或者 我写的 xser php 框架
0 请登录后投票
   发表时间:2010-12-23  
vb2005xu 写道
你可以看看 QEEPHP框架 或者 我写的 xser php 框架

有什么特别之处呢?
0 请登录后投票
   发表时间: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 了。
以上代码只是示意,未经测试。


嗯,这种做法不错,学习了。
我发现我写程序总是用面向过程的思想写面向对象的程序
这个思维习惯真难改。
0 请登录后投票
   发表时间:2011-01-18  
当前的php框架,都是喜欢大而全,而不是只提供一个基本的架子(基础)。
前些日子,接手一个项目用了ci,感觉不过如此。
我认为M层就应该是与框架无关的,但是很多php框架偏偏不!
你的struts框架的service层只能被特定的C用吗?当然不是了。

当然,写个php 框架也不是什么难事,可以自己试试,对mvc应该会有更深的了解!
0 请登录后投票
   发表时间:2011-01-18  
dwwind 写道
当前的php框架,都是喜欢大而全,而不是只提供一个基本的架子(基础)。
前些日子,接手一个项目用了ci,感觉不过如此。
我认为M层就应该是与框架无关的,但是很多php框架偏偏不!
你的struts框架的service层只能被特定的C用吗?当然不是了。

当然,写个php 框架也不是什么难事,可以自己试试,对mvc应该会有更深的了解!


一看就知道是PHP新手
0 请登录后投票
   发表时间:2011-01-19  
我们是将model层分为两层:DAO和SERVICE
控制器调用自己的SERVICE但是不同的SERVICE可以相互调用。
这样控制器就能通过SERVICE调用其他的服务了!
0 请登录后投票
   发表时间:2011-01-19  
vb2005xu 写道
dwwind 写道
当前的php框架,都是喜欢大而全,而不是只提供一个基本的架子(基础)。
前些日子,接手一个项目用了ci,感觉不过如此。
我认为M层就应该是与框架无关的,但是很多php框架偏偏不!
你的struts框架的service层只能被特定的C用吗?当然不是了。

当然,写个php 框架也不是什么难事,可以自己试试,对mvc应该会有更深的了解!


一看就知道是PHP新手


:-) 不错!我写php尚不到3年。也用过一些框架。
   每个人对框架的理解可能不一样。自己用着顺手的才是最好的。
   日前也曾经写了个:http://rare.sinaapp.com.
 
   呵呵,现在php框架已经快到了一个泛滥的程度了。
0 请登录后投票
   发表时间:2011-01-20  
套用r大大那句话: 使用rails或者PHP类rails框架的 基本都是充血模型 想瘦都瘦不下来

使用 java ssh 基本就是 贫血模型 你想充也充不了 PHP的 怎么简单就怎么来好了 只要能 代码看的舒服 就怎么来 干嘛自己整那么多规矩
0 请登录后投票
   发表时间:2011-01-31  
dwwind 写道
vb2005xu 写道
dwwind 写道
当前的php框架,都是喜欢大而全,而不是只提供一个基本的架子(基础)。
前些日子,接手一个项目用了ci,感觉不过如此。
我认为M层就应该是与框架无关的,但是很多php框架偏偏不!
你的struts框架的service层只能被特定的C用吗?当然不是了。

当然,写个php 框架也不是什么难事,可以自己试试,对mvc应该会有更深的了解!


一看就知道是PHP新手


:-) 不错!我写php尚不到3年。也用过一些框架。
   每个人对框架的理解可能不一样。自己用着顺手的才是最好的。
   日前也曾经写了个:http://rare.sinaapp.com.
 
   呵呵,现在php框架已经快到了一个泛滥的程度了。

嗯,也许自己写的才是最顺手的……
回头研究一个自己的。
0 请登录后投票
   发表时间:2011-04-22   最后修改:2011-04-22
昨天写程序遇到某些问题 想了一宿 突然想通了 之前是我太浅薄了 呵呵 收回之前所有的话 我就是个新手

thanks楼主 你的这个 视图驱动 解决了 我长期困扰的一个问题 呵呵 我要好好想想 然后改善我的 sfw ..

这个问题 我之前也遇到过 ... 在qee的里面 视图层 在一定程度上使用 控件 也解决了这个问题

不过你这种 视图驱动 开发的 建议 很好 , 我要好好想想了 谢谢了啊

0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics