CodeIgniter v2.2.3 练手
1. 安装
下载地址
2. 运行
2.1 配置Nginx
- 配置文件: conf/nginx.conf
- 访问地址: http://ci-dev.com/
移除 URL 中的 index.php
location / {
try_files $uri $uri/ /index.php?$query_string;
}
配置多环境 开发环境/生产环境
2.2当系统运行在开发环境或生产环境中时能有不同的行为
ENVIRONMENT 常量
- 处理逻辑
index.php
line 21, v2版本需要改写成define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
- 设置
conf/nginx.conf
line 27
对默认框架行为的影响
- 错误报告
- 配置文件
- 特定环境的配置文件,新建或复制一个配置文件到 application/config/{ENVIRONMENT}/{FILENAME}.php
性能分析
2.3controllers/Pages.php
line 11, 启用分析器
日志
2.4- 日志目录
application/logs
application/config/config.php
line 185 $config['log_threshold']- log_message($level, $message) $level (string) -- Log level: 'error', 'debug' or 'info'
controllers/Pages.php
line 25
3. 代码上手教程
加载静态内容
3.1路由配置: application/config/routes.php
访问:
http://ci-dev.com/index.php/[controller-class]/[controller-method]/[arguments]
http://ci-dev.com/pages/view/home http://ci-dev.com/pages/view/about
读取新闻条目
3.2- 初始化数据库: source conf/mysql_init.sql
- 数据库配置: dbdriver要设置成mysqli
- 显示数据: http://ci-dev.com/news
创建新闻条目
3.3http://ci-dev.com/index.php/news/create
以下内容是我认为一个上手一个框架必须包含的功能
以 CLI 方式运行
3.4为在命令行下运行单元测试做准备
➜ codeigniter-2-startup git:(master) ✗ php index.php news
<html>
<head>
<title>CodeIgniter 2 Tutorial</title>
</head>
<body>
<h1>News archive</h1><h2>News archive</h2>
...
单元测试
3.5CodeIgniter 的单元测试类非常简单,由一个测试方法和两个显示结果的方法组成。 它没打算成为一个完整的测试套件,只是提供一个简单的机制来测试你的代码是否 生成了正确的数据类型和结果。
在 application/controllers/News.php
中引入单元测试
在链接中直接调用:http://ci-dev.com/news/test
定制测试报告命令行输出cli_report()
- codeigniter-cli_unit_test
- 扩展原生类库
application/libraries/MY_Unit_test.php
➜ codeigniter-2-startup git:(master) ✗ php index.php news test
[Test results] : /opt/local/ide/git_storage/github/codeigniter-2-startup/application/controllers/news.php
Test Name Test Datatype Expected Datatype Result Notes
get news Array Array Passed
4. 通用主题
保留名称
4.1- 控制器名称
- 函数
- 变量
- 常量
控制器
4.2- 继承 CI_Controller
- 通过 URI 分段向方法传递参数:[controller-class]/[controller-method]/[arguments]
视图
4.3- 视图其实就是一个 Web 页面,或者页面的一部分
- 视图必须通过 控制器 来加载
- 使用循环
URI 路由
4.4- 设置路由规则:
application/config/routes.php
- 通配符:
$route['product/(:num)'] = 'catalog/product_lookup_by_id/$1';
- 正则表达式
- 回调函数
- 使用 HTTP 动词
模型
4.5模型是专门用来和数据库打交道的 PHP 类
- 加载模型:
$this->load->model('model_name');
- 自动加载:
application/config/autoload.php
- 连接数据库:
$config['dbdriver'] = 'mysqli';
辅助函数
4.6- 加载辅助函数
$this->load->helper('name');
- 扩展辅助函数
application/helpers/MY_array_helper.php
在原有辅助函数中增加几个方法
CI类库
4.7- 加载类库
$this->load->library('class_name');
- 加载多个类库
$this->load->library(array('email', 'table'));
- 创建自有类库 //以后再说
公共函数
4.8CI中定义了一些全局的函数,可以直接使用
5. 数据库、类库及辅助函数
5.1 Database
数据库快速入门
5.1.1- 配置数据库
application/config/database.php
- 连接数据库
application/models/New_model.php
line 5, $this->load->database(); - 多结果标准查询(数组形式)
application/controllers/News.php
line 51foreach ($data['news'] as $row)
- SQL标准插入
application/controllers/News.php
_test_db_insert() - 运行单元测试
php index.php news test
基于访问页面的数据库查询缓存
5.1.2数据库缓存类允许你把数据库查询结果保存在文本文件中以减少数据库访问
启用缓存需要三步
- 在服务器上创建一个可写的目录以便保存缓存文件;
- 通过文件 application/config/database.php 中的 cachedir 参数设置其目录路径;
- 通过将文件 application/config/database.php 中的 cache_on 参数设置为 TRUE, 也可以用下面的方法手动配置
缓存文件不会过期,那么你的应用程序中应该有删除缓存的机制 $this->db->cache_delete()
Libraries
5.25.2.1 缓存
使用MP_Cache
application/libraries\MP_cache.php
application/config/config.php
line 210$config['mp_cache_dir'] = FCPATH . 'var/cache/';
- 在Model中使用
application/models/News_model.php
- load library
$this->load->library('MP_cache');
- missing & save
get_news
- 测试
cat var/cache/news_list.cache