CI 笔记一
CodeIgniter
说明
CodeIgniter 是为PHP 开发人员提供的一套Web 应用程序工具包。它的目标是能
够让你比从零开始更加快速的完成项目,它提供了一套丰富的的类库来满足我们日常
的任务需求,并且提供了一个简单的接口和逻辑结构来调用这些库
安装
- 解压缩安装包
- 将CodeIgniter 文件夹及里面的文件上传到服务器,通常index.php 文件将位于
网站的根目录; - 使用文本编辑器打开application/config/config.php 文件设置你网站的根URL,
如果你想使用加密或会话,在这里设置上你的加密密钥; - 如果你打算使用数据库,打开application/config/database.php 文件设置数据库
参数。 - 主目录下index.php的$system_path,$application_folder,$view_folder分别表示系统路径,
应用路劲及视图路径,默认为system,application及application/views
流程
- index.php 文件作为前端控制器,初始化运行CodeIgniter 所需的基本资源;
- Router 检查HTTP 请求,以确定如何处理该请求;
- 如果存在缓存文件,将直接输出到浏览器,不用走下面正常的系统流程;
- 在加载应用程序控制器之前,对HTTP 请求以及任何用户提交的数据进行安全
检查; - 控制器加载模型、核心类库、辅助函数以及其他所有处理请求所需的资源;
- 最后一步,渲染视图并发送至浏览器,如果开启了缓存,视图被会先缓存起来用
于后续的请求。
MVC
示例 访问如下路由
http://example.com/Home/Index
Control
在 application/controllers 下创建一个文件Home.php,代码如下:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
//类名称必须大写
class Home extends CI_Controller {
public function index()
{
$this->load->view('index.php');
}
}
?>
VIEW
在 application/views 下创建一个文件index.php,代码如下:
<!DOCTYPE html>
<html>
<head>
<title>demo</title>
</head>
<body>
<p>demo</p>
</body>
</html>
MODEL
通过视图加载方法的第二个参数可以从控制器中动态的向视图传入数据,这个参数
可以是一个数组或者一个对象,利用$data传递"hello world"字符串到视图中,修改代码如下
controler:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Home extends CI_Controller {
public function index()
{
$data['str'] = 'hello world';
$this->load->view('index.php',$data);
}
}
?>
view:
<!DOCTYPE html>
<html>
<head>
<title>demo</title>
</head>
<body>
<p><?php echo $str;?></</p>
</body>
</html>
路由
基本路由格式
http://example.com/[controller-class]/[controller-method]/[arguments]
1. 第一段表示要调用的控制器类;
2. 第二段表示要调用的类中的函数或方法;
3. 第三段以及后面的段代表传给控制器的参数,如ID 或其他任何变量;
修改路由配置文件(application/config/routes.php),可以创建新的路由规则,例如
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构