CI框架 -- 文件结构
这个本来是很基础的东西,基本上用过CI的人都知道这些,原本是不消说的~但是因为毕业论文是关于CodeIgniter的,所以我必须把大大小小的东西都写出来做成记录~
CodeInigter,一个轻量,功能全面的PHP框架,使开发者可以轻易的使用MVC的结构来开发web应用。
下载一份CI的代码(最新的为2012.10.08
更新的2.1.3
),我们可以看到根目录下只有五个文件/文件夹,其中user_guide
文件夹里为说明文档,license.txt
为许可协议,去掉user_guide
的CodeIgniter
只有1M多一点,从这点就可以看出这是一个很轻量的框架。
甚于的文件只有三部分,index.php
、systerm
文件夹和application
文件夹。我们可以分开分析。
index.php
index.php是CI的入口文件件,换句话说,用CI搭建的框架,我们发送的请求都是请求的这个文件,后面跟的
controller
和method
都是跟在URL后面的参数。比如
http://localhost/index.php?/admin/main
,问号以后实际上都是参数了。为了方便用户浏览,我们在
.htaccess
和http.conf
里开启了隐藏/index.php?
,把URL写成http://localhost/admin/main
,但是不能被这个所迷惑,以为是直接访问的admin/main
。至于这个文件的具体分析,在阅读源码的时候再详解。
systerm文件夹
从字面上我们也很容易理解到,这是CI的框架核心部分,基本上我们用CI做开发的时候是不要去改动这一部分的东西的(甚至包括
index.php
),当然如果你对这个框架非常熟悉并尝试去修改这个框架,那你肯定要去修改这里面的部分了。我们可以看到这里面有
core
、database
、fonts
、helpers
、language
、libraries
六个文件夹(我们基本可以暂时忽略掉index.html
和.htaccess
)。从字面意义上也很好理解。core
,核心部分,包括CI框架的核心类,CI每运行一次,基本上这里面的文件都要运行一遍;database
,和数据库有关的,是数据库驱动,CI支持多种数据库,包括mySQL,SQL server等;fonts
,字体,基本可以忽略;helpers
,辅助函数,是一个很实用的部分,常用到的有url
、date
等,在我们编写代码的时候会经常用到;language
,语言文件,用于多语言支持,以数组的形式编写,默认只有English
包;libraries
,类库,以类的形式存在,一些相对于helpers
来说更重要的、模块化、系统性较强的东西,如session
、Zip
、XML解析、单元测试等等;
我们可以看到除了
fonts
文件夹,其他每个文件夹里都有很多内容,现在我们并不具体分析每个文件夹里的文件的作用。application文件夹
里面也是一些文件夹,我们依然从字面去理解,并简单的看一下里面有些什么东西;
cache
,缓存,里面是空的;我们可以在这个地方放一些缓存,淡然这个缓存指的是缓存数据;config
,这个文件夹里有一些文件,都是配置文件,每个文件的命名很很好懂了;同时我们也可以注意到这里面的文件和systerm/core
、systemrm/libraries
里面的文件具有一些相同名字的,显然这些都是我们利用CI做一个web应用时需要去修改的配置文件;controllors
,控制器,CI让我们用MVC的模式去开发应用,那这个文件夹下放的就是我们的C的一部分了;控制器,处理业务逻辑,我们编写的控制器类应该放在这里了;core
,这里又有一个core
,可以放对框架核心的扩展类;error
,错误页面存放的地方,里面可以看到404
的页面,我们可以修改它;helpers
,空的文件夹,在这里放上我们自己添加的辅助函数;hooks
,钩子,官方文档里说:使得您可以在不修改系统核心文件的基础上来改变或增加系统的核心运行功能;一个需要去灵活运用的东西;language
,放置语言文件;librariies
,放置我们的类库;logs
,存放日志;models
, M的部分,数据操作的函数应该放在这里了;third_party
,如果要扩展CI的话,这也是需要用到的地方;views
,V的部分,放置视图文件,显然这个里面的文件是整个CI里仅有的会有很多HTML的地方了;
很明显这个文件夹里大部分都是空文件夹,除了
config
里面有一些设置文件,errors
里有如404之类的页面。这个文件夹时CI预留给我们存放自己开发的项目的,每一类文件应该放置在什么地方都为我们归好类了,大大简化了开发流程和工作量。
CI框架 -- 文件结构的更多相关文章
- 【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的
[军哥谈CI框架]之入门教程之第二讲:分析CI结构和CI是怎么工作的 之入门教程之第二讲:分析CI结构和CI是如何工作的大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们, ...
- ci框架登陆之后每隔几分钟就需要重新登录的问题
一个简单的登陆写好之后,发现每次进入需要登陆之后才能进入的页面都会跳转到登录页面,猜测应该是session被清了,打印出来,果然为空,但是我没有设置session的生存周期,按照默认的应该是24小时, ...
- 第一天ci框架开发商城2
ci框架开发商城2 1/28/2016 9:45:52 PM mvc完整案例 mvc完成新闻的增删改查 news控制器news.php class News extends CI_controller ...
- 第一天ci框架开发商城1
ci框架开发商城1 1/28/2016 9:43:52 PM userguide删除 system application controllers 控制器 models 模型 views 视图 模板 ...
- CI框架之HOOKS使用流程及原理
Ci框架中Hooks可以理解:在框架的执行流程过程中,允许开发者在固定的某些时间点上(如:调用控制器前,调用控制器后等时间点上),调用其他函数来扩充CI框架执行流程的一种方法.技术上来就是通过 ...
- CI框架使用PHPmail插件发送QQ邮件:
有助请顶,不好请评.0:33 2016/3/12CI框架使用PHPmail插件发送QQ邮件:发送成功,不过修改了主机参数,还包含了一个phpmail中的一个另外的文件,详见下方:参见:http://c ...
- 初学后台框架总结篇二——快速了解CI框架
一.下载CI框架并安装,这里放置一张自己的项目目录结构图 目录框架搭建好之后开始将自己的项目与框架融合 二.更改相关配置 1.用任何文本编辑器打开 application/config/config. ...
- CI框架,源代码一次性判断获取post(get)数据是否有某个字段值为空方法
一.以下是CI框架 1.把所有的要接收的字段放在数组中 例: 我要接收:id,name,age,mobile 等字段 $req = array('id','name','age','mobile'); ...
- CI框架搭建
CI 框架等移植到不同等环境十分方便,只要改很少等配置: 1.修改config.php 文件(修改这一个文件就可以跑通了): $config['base_url'] = 'http://127.0.0 ...
随机推荐
- (原创)C++11改进我们的程序之简化我们的程序(一)
C++11在很多方面可以简化我们的程序开发,我会在“简化我们的程序”这一系列的博文中一一讲到,敬请关注.这次要讲的是:C++11如何通过获取函数模板的返回值类型来简化我们的程序.在谈到简化之前,我们先 ...
- 【Linux】了解服务器的情况
Java程序大多数都部署在Unix环境,而环境的稳定性对于部署的应用至关重要,所以Java开发人员需知道了解Unix环境的命令. 系统版本 查看系统版本 [root@localhost third_p ...
- Lua中的loadfile,dofile,require使用,最后还有调试
1.loadfile---只编译,不运行. loadfile编译代码成中间码并且返回编译后的chunk作为一个函数,而不执行代码:另外loadfile不会抛出错误信息而是返回错误代号. loadstr ...
- Upgrade Bash to 4+ on OS X
http://buddylindsey.com/upgrade-bash-to-4-on-os-x/ Unfortunately, Apple has decided to ship an old v ...
- iOS开发:代码通用性以及其规范 第二篇(猜想iOS中实现TableView内部设计思路(附代码),以类似的思想实现一个通用的进度条)
在iOS开发中,经常是要用到UITableView的,我曾经思考过这样一个问题,为什么任何种类的model放到TableView和所需的cell里面,都可以正常显示?而我自己写的很多view却只是能放 ...
- svn 版本管理与自动部分发布
作为团队开发项目时,会遇到项目的版本管理,测试部署与发布部署,下面是摘至他人的关于版本管理和自动部署的方案. svn自动部署的实现: 使用svn的hook功能 1.在版本库的hooks目录下面,有一些 ...
- spring batch中MyBatisPagingItemReader分页使用介绍
假如是mysql的话,SQL语句 <![CDATA[select * from ( SELECT so.* FROM t_tm_sales_order so where so.last_modi ...
- 可嵌入图片视频jQuery全屏滑块
分享一款可嵌入图片视频jQuery全屏滑块.这是一款可定制的滑块幻灯片代码,支持键盘箭头切换.效果图如下: 在线预览 源码下载 实现的代码. html代码: <script type ...
- laravel 5.4在控制器构造函数中获取auth中间件失败
想在控制器的构造函数中取出登录的用户 ,保存到类的属性中. 当然可以用Auth::user(),可以做到,但是不想这么做. 没想到这个属性一直是空的.后来用xdebug调试,在中间件handle和构造 ...
- <Effective Django>读书笔记
In Django parlance, a project is the final product, and it assembles one or more applications togeth ...