[学习*Codeigniter* 第一天]

<p>[程序运作流程]
下图说明了整个系统的数据流程:

CodeIgniter 程序流程


图片发自简书App
  • index.php 文件作为前端控制器,初始化运行 CodeIgniter 所需的基本资源;

  • Router 检查 HTTP 请求,以确定如何处理该请求;

如果存在缓存文件,将直接输出到浏览器,不用走下面正常的系统流程;

  • 在加载应用程序控制器之前,对 HTTP
  • 请求以及任何用户提交的数据进行安全检查;
  • 控制器加载模型、核心类库、辅助函数以及其他所有处理请求所需的资源;
  • 最后一步,渲染视图并发送至浏览器,如果开启了缓存,视图被会先缓存起来用于后续的请求。

[框架目录]

[目录架构]
app
|-----system 框架程序目录
|-----core 框架的核心程序
|-----CodeIgniter.php 引导性文件
|-----Common.php 加载基类库的公共函数
|-----Controller.php 基控制器类文件:CI_Controller
|-----Model.php 基模型类文件:CI_Model
|-----Config.php 配置类文件:CI_Config
|-----Input.php 输入类文件:CI_Input
|-----Output.php 输出类文件:CI_Output
|-----URL.php URL类文件:CI_URl
|-----Router.php 路由类文件:CI_Router
|-----Loader.php 加载类文件:CI_Loader
|-----helpers 辅助函数
|-----url_helper.php url相关的辅助函数,如:创建url的辅助函数
|-----captcha_helper.php创建图形验证码的辅助函数
|-----libraries 通用类库
|-----Pagination.php 通用分页类库
|-----Upload.php 通用文件上传类库
|-----Image_lib.php 通用图像处理类库
|-----Session.php 通用session类库
|-----language 语言包
|-----database 数据库操作相关的程序
|-----DB_active_rec.php 快捷操作类文件(ActiveRecord)
|-----fonts 字库

|-----application 项目目录
|-----core 项目的核心程序
|-----helpers 项目的辅助函数
|-----libraries 通用类库
|-----language 语言包
|-----config 项目相关的配置
|-----config.php 项目相关的配置文件
|-----database.php 数据库相关的配置文件
|-----autoload.php 设置自动加载类库的配置文件
|-----constants.php 常量配置文件
|-----routes.php 路由配置文件
|-----controllers 控制器目录
|-----welcome.php 控制器文件,继承CI_Controller
|-----models 模型目录
|-----welcome_model.php 模型文件,继承CI_Model
|-----views 视图目录
|-----welcome.php 视图模板文件,默认后缀名为.php
|-----cache 存放数据或模板的缓存文件
|-----errors 错误提示模板
|-----hooks 钩子,在不修改系统核心文件的基础上扩展系统功能
|-----third_party 第三方库
|-----logs 日志

|-----index.php 入口文件

[目录简介]
甚于的文件只有三部分,index.php、systerm文件夹和application文件夹。我们可以分开分析。

[index.php入口文件]

  • <strong>index.php</strong>是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框架怎么引外部的CSS和JS文件]

1、两种方法,相对路径和绝对路径
2、相对路径是相对网站根目录的路径也就是index.php所在的路径
3、绝对路径可以使用config.php中base_url配置
4、举例:public是根目录下的文件夹,存放静态文件


>[相对]



>[绝对]
首先php获取base_url的值

$base_url = $this-&gt;config-&gt;item('base_url');
//通过参数传递到html页面
$this-&gt;load-&gt;view('index', array('base_url'=&gt;$base_url));
//页面中使用


>[示例]


顶部
</p>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容