本文是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框架学习笔记(一)相关推荐

  1. CI/CD学习笔记-Jenkins综合项目Github+Jenkins+Harbor+Docker

    实验说明 实验拓扑 部署流程 研发push到github代码库 Jenkins 构建,pull git代码 使用maven进行编译打包 打包生成的代码,生成一个新版本的镜像,push到本地docker ...

  2. 教你学习CI框架codelgniter——CI框架基本配置

    CI 框架现在中国可以说还是不成熟,不像thinkphp那样有那么多的中文手册,在国内,很多国人英语都很烂,CI现在教程还是不多.大家心里都存在这严重想法,我想用CI,国外用的人很多,而且速度非常快, ...

  3. ci框架 mysql_CodeIgniter (CI)框架中的数据库查询汇总

    引言: 前两天业务涉及到一个拉取答题排行榜的需求,数据库里数据是这样的: 同一个人可能提交过多次成绩,所以同一个人可能会有多次记录: 同一个人提交的多次成绩中可能有至少两次成绩是一样的. 于是,查询的 ...

  4. php tp框架手册,php框架手册

    应用介绍 php框架手册是一款涵盖php相关教程的app,提供php基础教程,为初学者提供一个入门的平台,让初学者对php产生兴趣,该app还包含linux教程.linux命令.mysql教程和php ...

  5. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  6. python3第三方库手册_python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑...

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  7. linux php执行ci框架,PHP CI框架学习之路径访问

    CI是一个PHP写的框架,使用它写网站非常方便,但是也会也有一些纠结的问题,比如说其中文件的路径访问. CI严格贯彻MVC思想,因此基于此思想的文件访问也比较严格,controllers控制器是所有v ...

  8. Blockchain -Corda框架研究一 cordapp-example 学习笔记

    Corda是Blockchain企业框架之一. 相关链接:https://docs.corda.net/ 国内:https://cncorda.com/ 这周开始准备学习Corda, 首先先研究一下h ...

  9. mybatis框架总体说明---Mybatis学习笔记(二)

    mybatis是什么? mybatis是一个持久层的框架,是apache下的顶级项目,后来托管到googlecode下,再后来托管到github下(https://github.com/mybatis ...

最新文章

  1. Exchange 混合部署—Exchange 20132007配置
  2. hdu 3790(最短路)
  3. 你可能不知道的Python面试秘籍 干货满满(附带参考答案)上篇
  4. mongodb 主键_MongoDB主键是您的朋友
  5. JAVA基础--IO输入输出(File使用)17
  6. SQL Server中的sysobjects” 是什么意思
  7. System Center 2016组件将发生什么变化?
  8. Grub 开启serial console支持
  9. CAD二次开发获取已选择实体
  10. isbn书号查询php代码,ISBN书号查询
  11. 各种开发语言项目环境国内(中国国内加速镜像)配置教程和部分实践经验,包括github.com, nodejs,npm,nvm, yarn, java, maven, gradle, python, m
  12. 世界十大极限运动是什么
  13. 什么是进程、线程、协程
  14. Filter中chain.doFilter(req, res)的理解
  15. NOAA气象监测数据下载(可下载最新及每日气象数据)
  16. Javaweb基础配置模板(mybatis+javaweb)
  17. java调用R 画词云
  18. UE4中Pak文件的读取规则
  19. 前端常用的几种加密方法
  20. MISRA-C 2004 规则解读(41S-60S)

热门文章

  1. FFmpeg下载(windows版本)
  2. 软件实施工程师是一个什么样的工作?他的具体工作内容是什么?发展前景怎样?
  3. jumpserver文件的上传和下载
  4. python 递增递减数列
  5. 渗透测试-C段主机信息收集
  6. Java 并发在项目中的使用场景
  7. linux 把数字变字符串,C语言中将数字转换为字符串的方法
  8. PyQt5:QMessageBox显示后程序崩溃退出问题
  9. PM说丨重构系统的需求分析这样做,让你事半功倍!
  10. 双缸四柱液压机的液压系统设计和PLC控制【说明书(论文)+CAD (PLC控制框图+PLC输入输出接线图+液压系统原理图+梯形图+任务书……)】