php 里的cl框架手册,CI框架学习笔记(一)
本文是CI框架学习笔记的第一篇,主要介绍了CI框架的环境安装,基本术语以及框架流程,非常的详细,有需要的朋友可以参考下
最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动。最近项目少,总算是有了一些时间去写一些东西。于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时刻提醒自己:借鉴和学习才有出路,忘记过去意味着背叛!基本术语说明
在本文开始之前,有必要对文中反复出现的术语做一个简单的说明,如果你对这一部分已经熟谙,完全可以略过。本文中反复出现和提及的术语包括:
前端控制器(Front Controller):
用于集中控制用户的所有请求的组件,,将用户的请求发送到具体的应用程序控制器。在CI框架中,指的就是框架的入口文件Index.php.前端控制器本身是一种设计模式,详细可参考《J2EE设计模式》。
应用程序控制器
应用程序控制器是具体的处理用户请求URL的控制器,通常将一组相关的处理或者请求放置在一个应用程序控制器中,例如:UserController可能包含用户的注册、验证、个人信息、个人页面等相关操作。
MVC
老生常谈的一个术语,是一种代码分层和组织模式。将代码分为M(Model,业务逻辑),V(view ,视图),C(Controller,控制器)等层次,便于将业务逻辑部分和视图渲染部分分离,减少代码的耦合。目前PHP中许多框架都基于MVC模式,如ZF,YII,CI等
Route路由
虽然名为Route,但这里并不是路由器,而是指截取用户的请求并将请求转发到特定的Controller处理的过程。不同的框架的路由不同,但基本原理相同。
Hook钩子
最初的Hook是指“消息传递中一个环节,用于监控消息的传递,并在消息处理之前,添加特定的处理”。这里的Hook是指,在不改变框架核心源码的基础上增加或更改系统的核心功能,最典型的情况包括:在控制器加载之前或加载完成之后运行特定的脚本。
CI框架配置
本文的基本环境:Linux x86_64 GNU/Linux .安装了PHP(CGI)+Nginx+Mysql+redis(所以本文的许多服务器相关的配置都是以Nginx为主,而暂时忽略Apache服务器)。
首先下载CI框架的源码,下载地址为: 目前稳定版本是2.2.0 。将源码解压到文件夹(假设为/usr/nginx/html/CI 目录)。
配置CI框架之前,先浏览一下框架的目录结构:
其中:
Application : 应用程序的目录,你的所有的应用代码都应该位于这个目录
index.php : 框架的入口文件
static : 我们自己建立的目录,放置一些CSS,image和js等静态文件(这完全可以放到application目录下,看个人喜好)
system : CI框架的系统文件,也是源码阅读的主要部分
user_guide : 用户指导,类似于离线的用户手册。
CI框架需要配置的地方比较少:
1. 配置routes
Routes.php中配置的是默认的应用程序控制器和404页面. 打开application/config/routes.php文件, 配置如下:
$route['default_controller'] = "index";
$route['404_override'] = '';
2. 配置数据库database.php
如果你的应用程序需要提供动态内容,那么数据库几乎是必不可少的配置。打开application/config/database.php文件,该文件内容如下:
CI框架是支持多数据流连接的,default是当前默认的连接,active_record用于指定是否启用ARM(Active Record Model)。每个配置项非常简明,这里不再做过多介绍。
3. 去掉index.php
现在访问你的应用程序,url应该类似于这样:
test.xq.com/index.php/index
test.xq.com/index.php/welcome
注意每个请求都会带有index.php段。去掉index.php会让URI更加美观。
打开刚刚添加的test.xq.com.conf文件,在server中添加如下配置:
if ($request_filename !~* /(favicon.ico|static|uploads|js|javascript|css|images|robots\.txt|index\.php|index\.html))
{
rewrite ^/(.*)$ /index.php?$1 last;
}
重启服务器后,现在,URL的访问方式变成了:
test.xq.com/index
test.xq.com/welcome
是不是简洁多了 :D
4. 添加.html访问后缀
可能还有人喜欢url中添加特定的后缀,例如.html后缀使你的应用程序更类似于一系列静态文件。配置方法是,在application/config/config.php中,更改如下配置为:
$config['url_suffix'] = '.html';
CI框架的更多配置可以参考:
让Nginx支持.htaccess(本文没有提及使用.htaccess重写的内容,可以参考之)框架集成Smarty,习惯用smarty模板引擎的童鞋可以看看 配置Vhost
为了方便访问(相比ip地址访问的方式,域名访问有更好的可记忆性),我们可以配置vhost,配置方式为:进入nginx的vhost目录,新建配置文件(本文中为test.xq.com.conf,一般情况下,我们的每个vhost都会以域名命名)。在配置文件中输入如下内容:
server {
listen 80;
server_name test.xq.com;
root
/usr/nginx/html/CI/;
access_log logs/xq_access_log main;
error_log logs/testsq.log error;
charset GBK;
index index.php;
location ~ .*\.(php|php5)?$
{
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
}
Server中暂时没有其他rewrite配置,稍后在配置CI框架的时候,我们可以添加更多的配置类支持CI的友好URL.
打开本地的host文件,在host中添加条目:
10.130.130.130 test.xq.com
其中10.130.130.130应该是你的服务器的IP地址。
现在,在浏览器中可以通过域名访问CI框架了。
框架流程
在结束本文之前,我们再看看CI框架的基本流程,这个流程将贯穿源码阅读的始终,所以,很有必要认真研读一下。引用CI框架用户手册的上的流程图:
基本的执行流程如下:
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php 里的cl框架手册,CI框架学习笔记(一)相关推荐
- CI/CD学习笔记-Jenkins综合项目Github+Jenkins+Harbor+Docker
实验说明 实验拓扑 部署流程 研发push到github代码库 Jenkins 构建,pull git代码 使用maven进行编译打包 打包生成的代码,生成一个新版本的镜像,push到本地docker ...
- 教你学习CI框架codelgniter——CI框架基本配置
CI 框架现在中国可以说还是不成熟,不像thinkphp那样有那么多的中文手册,在国内,很多国人英语都很烂,CI现在教程还是不多.大家心里都存在这严重想法,我想用CI,国外用的人很多,而且速度非常快, ...
- ci框架 mysql_CodeIgniter (CI)框架中的数据库查询汇总
引言: 前两天业务涉及到一个拉取答题排行榜的需求,数据库里数据是这样的: 同一个人可能提交过多次成绩,所以同一个人可能会有多次记录: 同一个人提交的多次成绩中可能有至少两次成绩是一样的. 于是,查询的 ...
- php tp框架手册,php框架手册
应用介绍 php框架手册是一款涵盖php相关教程的app,提供php基础教程,为初学者提供一个入门的平台,让初学者对php产生兴趣,该app还包含linux教程.linux命令.mysql教程和php ...
- java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)
原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...
- python3第三方库手册_python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑...
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...
- linux php执行ci框架,PHP CI框架学习之路径访问
CI是一个PHP写的框架,使用它写网站非常方便,但是也会也有一些纠结的问题,比如说其中文件的路径访问. CI严格贯彻MVC思想,因此基于此思想的文件访问也比较严格,controllers控制器是所有v ...
- Blockchain -Corda框架研究一 cordapp-example 学习笔记
Corda是Blockchain企业框架之一. 相关链接:https://docs.corda.net/ 国内:https://cncorda.com/ 这周开始准备学习Corda, 首先先研究一下h ...
- mybatis框架总体说明---Mybatis学习笔记(二)
mybatis是什么? mybatis是一个持久层的框架,是apache下的顶级项目,后来托管到googlecode下,再后来托管到github下(https://github.com/mybatis ...
最新文章
- Exchange 混合部署—Exchange 20132007配置
- hdu 3790(最短路)
- 你可能不知道的Python面试秘籍 干货满满(附带参考答案)上篇
- mongodb 主键_MongoDB主键是您的朋友
- JAVA基础--IO输入输出(File使用)17
- SQL Server中的sysobjects” 是什么意思
- System Center 2016组件将发生什么变化?
- Grub 开启serial console支持
- CAD二次开发获取已选择实体
- isbn书号查询php代码,ISBN书号查询
- 各种开发语言项目环境国内(中国国内加速镜像)配置教程和部分实践经验,包括github.com, nodejs,npm,nvm, yarn, java, maven, gradle, python, m
- 世界十大极限运动是什么
- 什么是进程、线程、协程
- Filter中chain.doFilter(req, res)的理解
- NOAA气象监测数据下载(可下载最新及每日气象数据)
- Javaweb基础配置模板(mybatis+javaweb)
- java调用R 画词云
- UE4中Pak文件的读取规则
- 前端常用的几种加密方法
- MISRA-C 2004 规则解读(41S-60S)
热门文章
- FFmpeg下载(windows版本)
- 软件实施工程师是一个什么样的工作?他的具体工作内容是什么?发展前景怎样?
- jumpserver文件的上传和下载
- python 递增递减数列
- 渗透测试-C段主机信息收集
- Java 并发在项目中的使用场景
- linux 把数字变字符串,C语言中将数字转换为字符串的方法
- PyQt5:QMessageBox显示后程序崩溃退出问题
- PM说丨重构系统的需求分析这样做,让你事半功倍!
- 双缸四柱液压机的液压系统设计和PLC控制【说明书(论文)+CAD (PLC控制框图+PLC输入输出接线图+液压系统原理图+梯形图+任务书……)】