MVC是一种设计模式模式,M(模型)—V(视图)—C(控制器);

  MVC的核心思想是强制开发者在进行项目开发时,将数据的输入,处理,输出分开编写;

    1.入口文件:该文件是唯一一个给浏览器直接请求的脚本文件;通常是以index.php 命名;

    2.控制器:负责协调模型和视图,以及一些验证权限等;controller;

    3.模型:提供数据,保存数据,数据有效性验证;model;

    4.视图:负责显示以及表单的数据收集;view;

    5.动作(方法):控制器中的公开方法,用于被浏览器请求;action;

  CI中的MVC:

    访问URL使用的是pathinfo模式;访问规则:http://主机名/入口文件/控制器/动作(方法)

    application目录中:

      controllers  控制器;

      models     模型;

      views     视图;

    CI中默认控制器是welcome控制器;默认方法是index方法;

    控制器:

      1.不需要加后缀;

      2.文件名全部小写;

      3.所有控制器需要直接或间接继承CI_Cortroller类,所有CI所提供的类都以CI_开头;

      4.控制器中对动作(方法)的要求:只有public才能被浏览器直接访问,方法名不能以_开头;

    模型:

      1.写模型一定要继承CI_Model;

      2.文件名全小写,类名首字母大写,建议使用_model做后缀,防止与控制器类名冲突;

      3.控制器调用模型应在控制器中加载模型 $this -> load -> model( ' 模型名 ' );加载完之后作为一个超级对象使用;

      4.$this -> 模型名 -> 方法();调用模型获取数据;

    视图:

      1.在控制器中加载视图: $this -> load -> view( ‘ 视图名 ’ );如有子目录则 view( ‘ 目录名/视图名 ’ );

      2.在视图中可以直接使用PHP的原生代码;

      3.推荐使用< ?php foreach($list as $item) : ?> <?=$item[ ' ' ]?> <?php endforeach; ?> 短标签;

  一整套MVC开发模式应该是使用控制器(controller)调用模型(model)方法获取数据再将数据返回给视图(view);

      

  如何扩展CI中的控制器,在CI主目录的application/core文件夹下自定义一个MY_Controller控制器类来继承CI_Controller控制器类,在项目中写控制器时直接继承自定义的MY_Controller控制器类就可以得到MY_Controller控制器类和CI_Controller控制器类中的方法;通常MY_Controller控制器类可以写一些自己的方法(登陆验证,权限验证等);如果不想用 MY_ 的默认前缀也可以在 application/config/config.php 文件中配置 $config[ ' subclass_prefix ' ] = ' MY_ ' ; 当中修改;

最新文章

  1. 【Hibernate框架】关联映射(一对一关联映射)
  2. 在docker里部署网络服务
  3. Linux下smokeping网络监控环境部署记录
  4. C# Window Form解决播放amr格式音乐问题
  5. php curl getinfo
  6. WPF之基于路径的动画
  7. Spark菜鸟学习营Day2 分布式系统需求分析
  8. HTML5全球普及加速:有望终结iOS与安卓界限【转】
  9. vs2012调试时为什么会出现clr.dll与mscordacwks.dll版本不匹配
  10. 程序设计入门——C语言 习题汇总
  11. python分布式环境下的限流器
  12. 网络安全实验室_注入关writeup
  13. JSONP获取Twitter和Facebook文章数
  14. C# 使用NPOI出现超过最大字体数和单元格格式变成一样的解决
  15. Day8 信号检测与估值
  16. 关于.NET编译的目标平台(AnyCPU,x86,x64) (转)
  17. 【2019年04月22日】A股最便宜的股票
  18. Luogu2264 树上游戏(点分治)
  19. LNMP环境下SendMail+OpenWebMail的详细配置
  20. net.tcp协议的wcf服务在远程计算机无法调用问题分析

热门文章

  1. 说说web缓存-强缓存、协商缓存
  2. Windows server 2008R2系统登录密码破解
  3. Jmeter的参数签名测试
  4. 蒟蒻的长链剖分学习笔记(例题:HOTEL加强版、重建计划)
  5. django数据库设置为MySQL
  6. 于工具类中@Autowired注入为NULL的问题记录
  7. Project Euler18题 从上往下邻接和
  8. Macserver服务更新经常使用的几个shell命令
  9. hdu 1011 树型dp
  10. 微博预计要火一阵的SleepSort之Shell及C实现