其实这几天一直都想找时间把这个感悟整理出来,也是这一段一直思考的问题,因为这一段参加一个PHP后台项目的开发,框架使用的是CI,随着项目的进展,对于CI接触的也越多,但是由于理解的可能并不深刻,我也只是看到了我所看到的,所以如果有不对的地方,欢迎给出意见和指正。

这几天接触CI框架,发现它的MVC模式运用的如此清晰简洁,完全按照MVC的分别组织模块,而且Model、View与Controller的交互只要调用方法就可以,如果有大量交互,Controller里的方法数量或许会增多,但也可以分模块的剥离来简化Controller,不过,这种方法数量的增多并不会造成Controller的臃肿,因为用户和界面相关的交互都在view中用JS动态完成,而Model的修改,controller也就是调用Model传参,View在向controller的主动交互中好像并没有受到限制,而目前我知道Model可以返回数据给Controller,但还不知道怎么主动调用Controller。不过这种单一流程的简洁性起初就已经让我惊讶了一把。虽然MVC模式的含义在哪里都是一样的,但运用的不同和语言架构的不同却会导致不同的结果和影响,比如iOS中MVC的交互里就限制了View和Model主动向controller的交互,并不是不能,只是做了一层限制,controller可以自由调用View和Model,传参最简单的方式就是属性传值,而如果一个View有了用户操作后想要调用controller就不会那么容易了,不过代理可以解除这个问题,只是代理委托模式再清晰,最后交互的主体操作都是在controller里;而Model如果又发生改变又想要congtroller做出回应,就更不容易了,KVO模式和通知的使用也可以解决,但这一层限制是避免不掉的。

从CI来看,View层并不只是显示,用户交互操作留在View里或许可以让controller不至于那么臃肿,而MVC下Controller的臃肿却是iOS架构模式中一直在讨论的问题,但是如果把一部分用户操作的响应直接放在View层也会有问题,很多时候View层可以接收用户操作,但如果不和Model沟通是无法响应的,还是避免不掉通过controller,那么到底应该从哪里入手呢,我最后的想法是,应该是Model,也许Model并不是只能作为一个数据内容的展示,如果给它必要的方法,也许可以帮助Controller分担一部分的工作,但这毕竟是有限的。

其实我以前也一直认为iOS里如果将controller的内容进行模块划分,是可以降低controller的冗余的,如果现在再给Model分担一部分内容,冗余程度会更低一些,但是终究是无法达到CI的这样简洁,而因为对controller冗余问题的讨论也诞生了MVVM,只是我对这种模式的运用并不能很熟练,只是知道大概是怎么个情况,而且目前的MVVM模式也不像MVC那么的成熟,精简controller估计会是要一直进行的一个讨论了。

PHP项目感悟 -- 从CI框架来看iOS的MVC的更多相关文章

  1. 在CI框架中的配置整合amfphp

    之前做的项目用到CI框架和amfphp的整合,主要用于php与flex的交互,在此做一下记录: 一. 安装CI框架: 1.  搭建PHP运行环境,本人在WIN7下用WAMP作测试,安装目录:d:/wa ...

  2. [BUGCASE]CI框架的post方法对url做了防xss攻击的处理引发的文件编码错误

    一.问题描述 出现问题的链接: http://adm.apply.wechat.com/admin/index.php/order/detail?country=others&st=1& ...

  3. 记录使用CI框架开发项目时遇到的问题

    关于CI框架在视图文件中怎样引入静态资源文件(js,css,images)的问题: 第一步:在application/config/config.php文件中配置  $config['base_url ...

  4. 【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的

    [军哥谈CI框架]之入门教程之第二讲:分析CI结构和CI是怎么工作的   之入门教程之第二讲:分析CI结构和CI是如何工作的大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们, ...

  5. **【ci框架】PHP的CI框架集成Smarty的最佳方式

    因为CI自带的模板功能不是很方便,所以大家普遍采用集成Smarty的方式来弥补CI这方面的不足. 本人在网上看了不少CI集成Smarty的教程,包括咱们CI论坛里面的一个精华帖子 http://cod ...

  6. PHP CI框架最近学到的内容

    CI框架配置方面注意的细节 在config里面的database.php里面是和数据库配置相关的内容 $db['default'] = array( 'dsn' => '', 'hostname ...

  7. CI框架入门笔记

    当前(2019-03-22)CodeIgniter 框架的最新版本是 3.1.5,于2017年6月发布,距今快两年了也没有更新,这与 Laravel 的更新速度相比差距太大了.因为确实,它是一个很古老 ...

  8. 【军哥谈CI框架】之CI中集成百度UEditor

    Hello,各位亲,新的一周来临啦,很高兴这么快又跟大家伙见面!话说上一回,军哥带大家用JQuery写了一个城市级联菜单的例子 ,不知道亲们学会了多少,是否自己可以独立写出来了呢. 军哥很是期待大家学 ...

  9. CI框架下 新浪微博登录接口完整版

    https://www.cnblogs.com/yznyzcw/p/3756622.html#top 说明:本贴只适合CI框架.功能实现:登录接口跳转链接成功,获取用户信息(包括最重要的u_id)成功 ...

随机推荐

  1. dojo布局(layout)

    使用BorderContainer和ContentPane实现布局 1.效果图如下: 2.HTML代码: <div id="appLayout" class="de ...

  2. iOS 10 开发 相机相关的适配

    升级 iOS 10 之后目测坑还是挺多的,记录一下吧,看看到时候会不会成为一个系列. 直入正题吧 今天在写 Swift 3 相关的一个项目小小练下手,发现调用相机,崩了.试试看调用相册,又特么崩了.然 ...

  3. php中ajax调用出错的问题

    最近用一些php,客户的使用jquery ajax的时候经常报错 ajax报错内容:readyState:4 status:"OK",statusText:"OK&quo ...

  4. 谷歌Cartographer学习(1)-快速安装测试

    谷歌自己提供了安装方法,但是安装比较繁琐,我做了一定的修改,代码放到个人github上,https://github.com/hitcm/. ros下面的安装非常快捷,只需要catkin_make即可 ...

  5. hdu 5876 (补图BFS) Sparse Graph

    题目:这里 题意: 相当于一开始给一个初始好了的无向完全图给你,然后给让你删除m条边,再给你一个点v,最后问你在剩下的图里从这个点v出发能到达所有边点的最小路径是多少? 一看是所有点的最小路径,一看就 ...

  6. django+nginx+xshell简易日志查询,接上<关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思>

    纠正一下之前在<关于<rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>>的反思>中说到的PHP+MySQL太慢,这里只是说我技术不好,没 ...

  7. 转载 - Vultr VPS注册开通且一键快速安装PPTP VPN和电脑连接使用

    本文转载来自:https://www.vultrclub.com/139.html 从2014年Vultr VPS进入市场之后,作为有背景.实力的搅局者,是的最近两年VPS.服务器的用户成本降低.配置 ...

  8. win8 vs2010 openni2 配置

    打开一个新项目或者已存在的项目用以使用  OpenNI 在Visual Studio 菜单中, 打开项目菜单,选择项目属性. 在C/C++ 选项卡中, 在"常规" 下, 选择 &q ...

  9. sql 中 in与exists的对比

    1.exists只能用于子查询,可以替代IN,如果查询到结果则退出内部查询,并将条件标记为TRUE,传回全部结果资料 in 不管匹配到匹配不到,都全部匹配 2.根据上面的解释可以得出结论:如果子查询结 ...

  10. android 很多牛叉布局github地址(转)

    原文地址 http://blog.csdn.net/luo15309823081/article/details/41449929 点击可到达github-------https://github.c ...