CodeIgniter框架文件结构
转自网络:http://my.oschina.net/scholer/blog/99226
这个本来是很基础的东西,基本上用过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预留给我们存放自己开发的项目的,每一类文件应该放置在什么地方都为我们归好类了,大大简化了开发流程和工作量。
CodeIgniter框架文件结构的更多相关文章
- 使用 CodeIgniter 框架快速开发 PHP 应用(二)
原文:使用 CodeIgniter 框架快速开发 PHP 应用(二) 二分钟: 建立一个 CodeIgniter 网站用CI建一个网站很容易. 这一章很短,解释了用CI制作网站时发生了些什么,哪些文件 ...
- 如何将文本编辑器嵌入框架--以Umeditor&CodeIgniter框架为例
转:http://blog.csdn.net/u013332865/article/details/52066211 最近接到一个给某私立贵族(小,初,高 12年只是学费近200W)学校做一个网站,时 ...
- 学习CodeIgniter框架之旅(一)自定义模板目录
在常用的框架本身都已经做好了分层和目录结构,但这在很多时候不满足项目的需求甚至在某些情况下变得不合理,因此很多时候需要自定义目录结构,在此就看看如果在CodeIgniter框架中自定义模板目录: 在C ...
- CodeIgniter框架入门教程——第三课 URL及ajax
本文转载自:http://www.softeng.cn/?p=74 这节课讲一下CI框架的路由规则,以及如何在CI框架下实现ajax功能. 首先,先介绍CI框架的路由规则,因为CI框架是在PHP的基础 ...
- CI(CodeIgniter)框架入门教程——第二课 初始MVC
本文转载自:http://www.softeng.cn/?p=53 今天的主要内容是,使用CodeIgniter框架完整的MVC内容来做一个简单的计算器,通过这个计算器,让大家能够体会到我在第一节课中 ...
- ***PHP中error_reporting()用法详解(含codeigniter框架中屏蔽错误提示的解决方案)
php中我们对错误的处理会常用到error_reporting函数了,大家可以看到最多的是error_reporting(E_ALL ^ E_NOTICE)了,这个到底什么意思呢,下面我来来看看. e ...
- CodeIgniter框架入门教程——第一课 Hello World!
本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...
- CodeIgniter框架中关于URL(index.php)的那些事
最近,在做自己的个人网站时,采用了轻量级的php框架CodeIgniter.乍一看上去,代码清晰简洁,MVC模型非常容易维护.开发时我采用的工具是Netbeans IDE 8.0,当然,本文的内容和开 ...
- 使用CodeIgniter框架搭建RESTful API服务
使用CodeIgniter框架搭建RESTful API服务 发表于 2014-07-12 | 分类于 翻译笔记 | 6条评论 在2011年8月的时候,我写了一篇博客<使用Cod ...
随机推荐
- 使用Java中间MessageDigest该文本MD5加密(Java中间MD5样品加密算法演示)
原文地址:http://www.wenboxz.com 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- 用Unicode迎接未来
项目中使用了emoji,然后,问题产生了,后端MySQL数据库无法存储emoji字符,悲了个剧. emoji是Unicode字符集的子集,Unicode的使用应该非常普遍了,怎么会 ...
- hdu4758 Walk Through Squares 自动机+DP
题意:给n*m的地图,在地图的点上走,(n+1)*(m+1)个点,两种操作:往下走D和往右走R.现在要从左上角走到右下角,给定两个操作串,问包含这两个串的走法总共有多少种. 做法:用这两个串构建自动机 ...
- windows server 2008见安装IIS方法(解决)
windows server 2008见安装IIS方法(解决) 刚开始有点蒙,后来才知道原来如此.! . 右键点击[我的电脑]--[管理]--[字符]--[加入角色]--仅落后win7像.啊! 版权声 ...
- C# Windows Schedule task此次收购task下一步执行时间
最近进行了一次需求和Windows Schedule task相关职能,通过schedule,计算下一次运行task时间. 它用于由第三方DLL实现,以下网站,以下载来自: http://tasksc ...
- java_ java多线程返回函数结果
两种方式:一种继承Thread类实现:一种通过实现Callable接口. 第一种方法: 因为实现Thread类的run方法自身是没有返回值的,所以不能直接获得线程的执行结果,但是可以通过在run方法里 ...
- js 利用iframe和location.hash跨域解决的方法,java图片上传回调JS函数跨域
奶奶的:折腾了我二天,最终攻克了!网上有非常多样例. 但跟我的都不太一样,费话不多说了,上图 上代码: IE ,firefix,chrome 測试通过 js :这个主页面,部分代码, functi ...
- 【百度地图API】如何自定义地图图层?实例:制作麻点图(自定义图层+热区)
原文:[百度地图API]如何自定义地图图层?实例:制作麻点图(自定义图层+热区) 摘要:自定义地图图层的用途十分广泛.常见的应用,比如制作魔兽地图和清华校园地图(使用切图工具即可轻松实现).今天我们来 ...
- 【百度地图API】情人节求爱大作战——添加标注功能
原文:[百度地图API]情人节求爱大作战--添加标注功能 任务描述: 2月2日是除夕,2月14立马来!即将到来的情人节,你想送TA一份什么礼物呢? 不如,在你们居住的地方,画个大大的桃心,表达你对TA ...
- 在Mac电脑上为Dash制作docSet文档
Dash是mac上的一款查看API的工具,里面能够直接下载大部分的API文档,可是有时候我们假设想把自己手里已有的文档也集成到Dash中,就须要我们自己动手了,事实上Dash官方也有教程怎样制作doc ...