一、MVC介绍

  • 模型 主要用来管理应用的数据, 根据应用的特殊业务规则获取数据。
  • 视图 是一个没有或者少量逻辑的简单的文件,
    它只负责将数据展示给用户。一个视图文件通常是一个HTML文件加入少量的PHP代码。视图中的PHP代码应该尽可能的简单
  • 控制器 主要承担了胶水代码的功能, 它主要在视图层和数据存储之间来回的处理并整合数据。控制器是你的应用程序的入口。

安装运行说明 请参考官方文档

https://codeigniter.org.cn/user_guide/intro/requirements.html

URL规则

http://example.com/[controller-class]/[controller-method]/[arguments]
如我们访问http://example.com/A/b/3,其意思是访问A这个控制器下的b方法,给b方法的传参为3

目录结构

入门关注app目录即可,注:这些文件夹的名字可更改,如何修改请另行搜索(需要更改路由)。

/Config        存放配置文件
/Controllers   控制器目录
/Database       Stores the database migrations and seeds files
/Filters        Stores filter classes that can run before and after controller
/Helpers        Helpers store collections of standalone functions
/Language       Multiple language support reads the language strings from here
/Libraries      Useful classes that don't fit in another category
/Models         Models work with the database to represent the business entities.
/ThirdParty     ThirdParty libraries that can be used in application
/Views          视图目录(存放HTML)

一个简单的Demo

视图:
新建页头文件 application/Views/Page.php 并添加以下代码:

<!doctype html>
<html>
<head>
<title>CodeIgniter Tutorial</title>
</head>
<body>
<h1><?= $title; ?></h1>
<em>&copy; 2016</em>
</body>
</html>

CodeIgnite 框架虽然没有规定任何的规则,但通过经验我们规定在 Views 目录下创建一个新的目录对应每个控制器。然后通过方法名来命名视图。这样就会使我们之后查找起来更加容易。例如:用户配置 可能会显示在一个名为 User 的控制器中,并且方法名称为 profile ,你就可以将该视图文件保存在 /app/Views/User/Profile.php 这个路径下,并这样命名。

控制器
新建一个文件 application/Controllers/Pages.php,然后添加如下代码:

public function view($page = 'home')
{//检测视图文件是否存在,//注意 视图文件也是php的后缀名 虽然其主要是Htmlif ( ! file_exists(APPPATH.'/Views/Pages/'.$page.'.php'))// PageNotFoundException 是 CodeIgniter 的内置函数,//用来展示默认的错误页面。throw new \CodeIgniter\PageNotFoundException($page);//title对应视图view文件中的$title变量,由于有很多个,通过//关联数组的形式传参过去$data['title'] = $page; //这里表示显示出视图文件,第一个参数为View文件夹下的相对路径//这里也可以使用其他路径的文件,echo view('Pages', $data);}

路由
通过之前的例子,您可在你的浏览器中输入 [your-site-url]index.php/pages/view查看刚刚我们所创建的界面,但是,有时我们会存在一些特殊的要求,比如为了方便用户操作和隐藏系统开发语言,更整洁和搜索引擎友好,我们会想要省略掉其中的index.php,这时就要使用路由重写功能了。
使用自定义的路由规则,你可以将任意的 URL 映射到任意的控制器和方法上,从而打破默认的规则:
让我们来试试。打开路由文件 application/Config/Routes.php 然后添加如下两行代码,并删除掉其它对 $route 数组赋值的代码。

$routes->setDefaultController('Pages/view');
// $routes 数组中使用了通配符 (:any) 来匹配所有的请求,
//然后将参数传递给 Pages 类的 view() 方法。
$routes->add('(:any)', 'Pages::view/$1');

CodeIgniter 读取路由的规则为从上到下,并将请求映射到第一个匹配的规则。每个规则都是一个正则表达式(左侧)映射到一个控制器和方法(右侧)。当获取到请求时,CodeIgniter 首先查找能匹配到的第一条规则,然后调用相应的可能存在参数的控制器和方法。

模型
首先需要连接数据库
CodeIgniter 安装时会自动生成一个 .env 文件,确保里面的配置信息没有被注释掉,并且和你本地的数据库实际情况相吻合:

database.default.hostname = localhost
database.default.database = ci4tutorial
database.default.username = root
database.default.password = root
database.default.DBDriver = MySQLi

参考 https://codeigniter.org.cn/user_guide/tutorial/news_section.html

模型文件中定义

public function getNews($slug = false)
{if ($slug === false){return $this->findAll();}return $this->asArray()->where(['slug' => $slug])->first();
}

Controller中这样使用

$model = new NewsModel();
$data['news'] = $model->getNews();

处理HTTP请求

$request = service('request');
// 请求的 uri(如 /about )
$request->uri->getPath();
// 检索 $_GET 与 $_POST 变量
$request->getGet('foo');
$request->getPost('foo');
// 从 $_REQUEST 检索,其中应同时包含 $_GET 和 $_POST 内容
$request->getVar('foo');

CI框架精简版教程 最快上手相关推荐

  1. win11装安卓应用(2022精简版教程)

    目录 1.电脑版本必须是windows11 2.系统必须处于Beta预览频道 3.要保证电脑已启用虚拟化 4.要保证电脑上没有安装其他安卓模拟器,也要保证Windows Sandbox(Windows ...

  2. C51精简版教程(AT89C51/STC89C52)

    文章目录 第一章:AT89S52(STC89C52)的引脚功能介绍 第二章:51的存储器结构(89s52或90C52RC为例) 第三章: C51的语法基础 第四章:IO口输入输出原理 第五章: 内部资 ...

  3. java编程软件教程_Java编程软件图文版教程,快来看看吧

    打开本站下载jdk 二.选择接受许可协议并下载JDK安装包 三.安装JDK就像一个普通的软件安装,它首先允许您下载JDK,然后让您下载JRE,注意:JDK中已经有JRE,所以我们关闭窗口直接下载JRE ...

  4. qnap虚拟linux,QNAP进阶教程:威联通NAS 虚拟机教程 安装精简版win10、软路由、群晖NAS系统!...

    威联通最具体的虚拟机利用方式之一,接待点赞.收藏! 6 t* L# m7 X+ E前言 - A- ^8 |# l0 E' E$ k大师好,俺又来了!5 G, c% {7 ]- Z6 Q$ ] 4 }% ...

  5. win10主题更换_还不升级? win10精简版不到10G,运行比win7还快,旧电脑的福音

    即使现在win7系统已经停止了服务,但是还有许多人宁愿面对随时有可能出现问题的win7,还是不愿升级win10系统. 至于原因,五花八门,比如win7兼容性和稳定性更好,比如win10经常更新,还有许 ...

  6. MySQL精简版安装教程

    MySQL精简版安装教程 提示:以下介绍的是MySQL十分精简的一个安装教程,整个一套流程操作下来之后,只会在你的电脑上安装MySQL server服务和一个MySQL 安装程序,精简的安装不会对使用 ...

  7. CX3 调试学习_持续更新(此文大部分对于初步使用没啥用,回头去公众号整理一个精简版配置应用教程)

    1.FX3 FX3是cypress公司(已被英飞凌收购)的一款USB产品,用于其他类型数据转到USB的桥接,数据接口类型可以通过配置进行修改 2.CX3 CX3是FX3的一个特例,专用于mipi CS ...

  8. 网众无盘服务器 快车挂盘失败 显示 当前磁盘已经为超级工作站模式,快吧无盘精简版结合网众...

    <快吧无盘精简版结合网众>由会员分享,可在线阅读,更多相关<快吧无盘精简版结合网众(15页珍藏版)>请在人人文库网上搜索. 1.快吧无盘三层+菜单结合网众施工方案前言:与网吧技 ...

  9. 最新CI框架PHP漫画小说二合一CMS网站系统源码+内附教程

    正文: 最新CI框架PHP漫画小说二合一CMS网站系统源码,Apache/Nginx + PHP (5.3 +) + MySQL(5.0 +),内附安装教程. 程序: wwxkhs.lanzouf.c ...

  10. 商品期货策略 之 Python 精简多品种 MACD 趋势策略框架(注释版)

    Python 精简多品种 MACD 趋势策略框架(注释版) Python超级精简的多品种MACD趋势策略框架, 代码超级精简, 注释超级详细啰嗦. >_<! 需要引用 python版CTP ...

最新文章

  1. Docker使用笔记
  2. AI研习丨专题:可解释推荐的强化学习框架
  3. Task.Run vs Task.Factory.StartNew
  4. 关于python语言、下列说法不正确的是-关于 Python字符串,下列说法错误的是_学小易找答案...
  5. gj5 自定义序列类
  6. 什么是大数据,大数据到底应该如何学?
  7. 计算机视觉论文-2021-06-21
  8. c语言程序设计多个文件,c语言如何单文件变多文件(2个文件),求大神帮忙!!...
  9. 如何运用接口中的变量?接口可以扩展吗?
  10. android studio for android learning (六)应用程序窗体显示状态操作(requestWindowFeature等的应用)
  11. 饥荒怎么把离线服务器改成在线,饥荒联机版专服简易启动教程
  12. 极验验证——滑块拼图验证码
  13. XP访问网络共享文件夹的方法
  14. 自媒体平台图文创作建议和技巧
  15. 【ModuleNotFoundError 与 ImportError】之 most likely due to a circular import
  16. 【3D建模制作技巧分享】zbrush中如何卡硬边?
  17. 文件被隐藏了怎么恢复?读完你就知道了
  18. 怎么调用onenet平台的API从而读取我们的设备数据和下发命令,做到控制开关
  19. archlinux 查询和删除软件
  20. PAT乙级 | 1041 考试座位号 (15分)

热门文章

  1. python编程单词排序_Python:对输入的单词进行字典序排序输出
  2. Java EE 导图
  3. GMV远超预期背后,快手电商做对了什么?
  4. 变异记录文件格式 vcf
  5. 最速下降法(附Python代码)
  6. 想做游戏测试,你一定要知道这几点!
  7. matlab刚度矩阵求逆,ANSYS求结构整体刚度矩阵逆矩阵APDL命令流
  8. 基于单片机的指纹识别电子密码锁设计
  9. 如何在校外下载期刊全文--应对大家工作后的资料搜寻
  10. DynamipsGUI使用注意