[学习*Codeigniter* 第一天]

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

CodeIgniter 程序流程


[学习*Codeigniter* 第一天]_第1张图片
图片发自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入口文件]

  • 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框架怎么引外部的CSS和JS文件]

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


>[相对]



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

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


>[示例]


顶部

你可能感兴趣的:([学习*Codeigniter* 第一天])