这个本来是很基础的东西,基本上用过CI的人都知道这些,原本是不消说的~但是因为毕业论文是关于CodeIgniter的,所以我必须把大大小小的东西都写出来做成记录~

CodeInigter,一个轻量,功能全面的PHP框架,使开发者可以轻易的使用MVC的结构来开发web应用。

下载一份CI的代码(最新的为2012.10.08更新的2.1.3),我们可以看到根目录下只有五个文件/文件夹,其中user_guide文件夹里为说明文档,license.txt为许可协议,去掉user_guideCodeIgniter只有1M多一点,从这点就可以看出这是一个很轻量的框架。

甚于的文件只有三部分,index.phpsysterm文件夹和application文件夹。我们可以分开分析。

  • index.php

    index.php是CI的入口文件件,换句话说,用CI搭建的框架,我们发送的请求都是请求的这个文件,后面跟的controllermethod都是跟在URL后面的参数。

    比如http://localhost/index.php?/admin/main,问号以后实际上都是参数了。

    为了方便用户浏览,我们在.htaccesshttp.conf里开启了隐藏/index.php?,把URL写成http://localhost/admin/main,但是不能被这个所迷惑,以为是直接访问的admin/main

    至于这个文件的具体分析,在阅读源码的时候再详解。

  • systerm文件夹

    从字面上我们也很容易理解到,这是CI的框架核心部分,基本上我们用CI做开发的时候是不要去改动这一部分的东西的(甚至包括index.php),当然如果你对这个框架非常熟悉并尝试去修改这个框架,那你肯定要去修改这里面的部分了。

    我们可以看到这里面有coredatabasefontshelperslanguagelibraries六个文件夹(我们基本可以暂时忽略掉index.html.htaccess)。从字面意义上也很好理解。

    1. core,核心部分,包括CI框架的核心类,CI每运行一次,基本上这里面的文件都要运行一遍;
    2. database,和数据库有关的,是数据库驱动,CI支持多种数据库,包括mySQL,SQL server等;
    3. fonts,字体,基本可以忽略;
    4. helpers,辅助函数,是一个很实用的部分,常用到的有urldate等,在我们编写代码的时候会经常用到;
    5. language,语言文件,用于多语言支持,以数组的形式编写,默认只有English包;
    6. libraries,类库,以类的形式存在,一些相对于helpers来说更重要的、模块化、系统性较强的东西,如sessionZip、XML解析、单元测试等等;

    我们可以看到除了fonts文件夹,其他每个文件夹里都有很多内容,现在我们并不具体分析每个文件夹里的文件的作用。

  • application文件夹

    里面也是一些文件夹,我们依然从字面去理解,并简单的看一下里面有些什么东西;

    1. cache,缓存,里面是空的;我们可以在这个地方放一些缓存,淡然这个缓存指的是缓存数据;
    2. config,这个文件夹里有一些文件,都是配置文件,每个文件的命名很很好懂了;同时我们也可以注意到这里面的文件和systerm/coresystemrm/libraries里面的文件具有一些相同名字的,显然这些都是我们利用CI做一个web应用时需要去修改的配置文件;
    3. controllors,控制器,CI让我们用MVC的模式去开发应用,那这个文件夹下放的就是我们的C的一部分了;控制器,处理业务逻辑,我们编写的控制器类应该放在这里了;
    4. core,这里又有一个core,可以放对框架核心的扩展类;
    5. error,错误页面存放的地方,里面可以看到404的页面,我们可以修改它;
    6. helpers,空的文件夹,在这里放上我们自己添加的辅助函数;
    7. hooks,钩子,官方文档里说:使得您可以在不修改系统核心文件的基础上来改变或增加系统的核心运行功能;一个需要去灵活运用的东西;
    8. language,放置语言文件;
    9. librariies,放置我们的类库;
    10. logs,存放日志;
    11. models, M的部分,数据操作的函数应该放在这里了;
    12. third_party,如果要扩展CI的话,这也是需要用到的地方;
    13. views,V的部分,放置视图文件,显然这个里面的文件是整个CI里仅有的会有很多HTML的地方了;

    很明显这个文件夹里大部分都是空文件夹,除了config里面有一些设置文件,errors里有如404之类的页面。

    这个文件夹时CI预留给我们存放自己开发的项目的,每一类文件应该放置在什么地方都为我们归好类了,大大简化了开发流程和工作量。

CI框架 -- 文件结构的更多相关文章

  1. 【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的

    [军哥谈CI框架]之入门教程之第二讲:分析CI结构和CI是怎么工作的   之入门教程之第二讲:分析CI结构和CI是如何工作的大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们, ...

  2. ci框架登陆之后每隔几分钟就需要重新登录的问题

    一个简单的登陆写好之后,发现每次进入需要登陆之后才能进入的页面都会跳转到登录页面,猜测应该是session被清了,打印出来,果然为空,但是我没有设置session的生存周期,按照默认的应该是24小时, ...

  3. 第一天ci框架开发商城2

    ci框架开发商城2 1/28/2016 9:45:52 PM mvc完整案例 mvc完成新闻的增删改查 news控制器news.php class News extends CI_controller ...

  4. 第一天ci框架开发商城1

    ci框架开发商城1 1/28/2016 9:43:52 PM userguide删除 system application controllers 控制器 models 模型 views 视图 模板 ...

  5. CI框架之HOOKS使用流程及原理

        Ci框架中Hooks可以理解:在框架的执行流程过程中,允许开发者在固定的某些时间点上(如:调用控制器前,调用控制器后等时间点上),调用其他函数来扩充CI框架执行流程的一种方法.技术上来就是通过 ...

  6. CI框架使用PHPmail插件发送QQ邮件:

    有助请顶,不好请评.0:33 2016/3/12CI框架使用PHPmail插件发送QQ邮件:发送成功,不过修改了主机参数,还包含了一个phpmail中的一个另外的文件,详见下方:参见:http://c ...

  7. 初学后台框架总结篇二——快速了解CI框架

    一.下载CI框架并安装,这里放置一张自己的项目目录结构图 目录框架搭建好之后开始将自己的项目与框架融合 二.更改相关配置 1.用任何文本编辑器打开 application/config/config. ...

  8. CI框架,源代码一次性判断获取post(get)数据是否有某个字段值为空方法

    一.以下是CI框架 1.把所有的要接收的字段放在数组中 例: 我要接收:id,name,age,mobile 等字段 $req = array('id','name','age','mobile'); ...

  9. CI框架搭建

    CI 框架等移植到不同等环境十分方便,只要改很少等配置: 1.修改config.php 文件(修改这一个文件就可以跑通了): $config['base_url'] = 'http://127.0.0 ...

随机推荐

  1. Vue.js使用-组件(上篇)

    1.什么是组件 组件可以理解为定义的一个view模块,可重复使用. 2.组件使用 1)创建组件 var myComponent = Vue.extend({ template: ' this is a ...

  2. python(56):正则表达式积累

    来源:http://www.runoob.com/python/python-reg-expressions.html re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果 ...

  3. Android环境搭建问题的解决: Connection to http://dl-ssl.google.com refused

    第一次搭建Android环境,遇到这个问题: Fetching http://dl-ssl.google.com/android/repository/addons_list-1.xmlFailed  ...

  4. 【驱动】DM9000A网卡驱动框架源码分析

    Linux网络设备结构 首先看一下Linux网络设备的结构,如下图: 网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发 ...

  5. Notepad++中支持Markdown

    最近在学习Markdown语言的使用,很想在XP主机上使用Markdown的离线编辑器,但MarkdownPad.作业部分的离线客户端都不能再XP上运行,需要.Net 4.5 以上版本,可惜一台老主机 ...

  6. S3C2440的七种模式之——未定义模式(去掉bl print1 bug解决)

    现在做第一个实验,模拟未定义模式. 未定义模式,是cpu遇到自己不能识别的指令时候做出的异常处理. arm指令的机器码一定是按照某种规范要求的,不然你随意写一条指令,cpu不是都可以执行吗?在cpu没 ...

  7. browser_autopwn2

    browser_autopwn2是个啥玩意儿? 一个集合了浏览器漏洞的小框架 option msf > use auxiliary/server/browser_autopwn2 msf aux ...

  8. redis过期回调以及键空间通知

    背景 最近需要涉及一个定时通知的业务,之前的办法是采用定时任务,每秒查询一次.后来了解到Redis的键空间通知机制,其中的过期通知,和业务非常贴合. 键空间通知 下面是Redis中文文档的介绍 键空间 ...

  9. 2017 年 机器学习之数据挖据、数据分析,可视化,ML,DL,NLP等知识记录和总结

    今天是2017年12月30日,2017年的年尾,2018年马上就要到了,回顾2017过的确实很快,不知不觉就到年末了,再次开篇对2016.2017年的学习数据挖掘,机器学习方面的知识做一个总结,对自己 ...

  10. 为什么说Thunderbird是最好的桌面RSS阅读器

    也许现在再讨论RSS阅读器似乎已经过时了,毕竟随着社交网络服务的发展,通过一个带有大众评分能力的社交网络(比如reddit),相比RSS的固定订阅而言,也许你能更快地在你所关心的话题上更快地获得新的资 ...