`
phinecos
  • 浏览: 343556 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CodeIgniter剖析(1)

 
阅读更多

下载CodeIgniter1.7并解压缩后,将index.phpsystem目录拷贝到web服务器的根目录下,这样就完成了CodeIgniter的安装。

安装完后可以看下system目录下的结构。Application是你自己项目存放文件的目录(简单来说,控制器,模型和视图都在这里)。System目录下其他文件夹是CodeIgniter自身的代码,比较常用的有libraries等。

要建立一个网站,一些常用的配置是首先需要做的.config文件夹中包含了一些为网站设定基本配置的文件,打开config.php,可以看到有许多配置项,例如

$config['base_url']用来配置网站的根目录

CI是一个实现了MVC模式的轻量级PHP框架,最重要的三个文件夹就是application目录下的models,viewscontrollers这三个子目录。

用户的所有访问请求首先被index.php这个路由器所拦截并进行处理,比如请求链接是:http://localhost/index.php/welcome/inde,并且你有一个控制器名为welcome,那么index.php这个路由器就会调用welcome这个控制器。

我们可以来看下welcome控制器的代码

class Welcome extends Controller

{

function __constructor()

{

parent::Controller();

}

function index()

{

$this->load->view('welcome_message');

}

}

首先是定义控制器类Welcome,它继承自Controller类。CI要求控制器类名称首字母大写,但文件名是小写。构造函数中你可以做一些初始化的工作,比如调用第三方类库或模型,或者定义类的成员变量。父类Controller的代码在/system/libraries/Controller.php中。

再回到对用户请求处理那部分来,index.php不仅要知道请求该由哪个控制器来处理,而且要知道是控制器里的哪个函数,这就是/welcome/index的原因,路由器会在welcome控制器中查找一个名为index的函数。

我们来看index函数,它里面只是用CI的装载函数(this->load->view)载入一个视图(“welcome_view”)

实际上welcome_view视图指向的是system/application/views/welcome_view.php这个文件,控制器可以定义相应的变量,并传递到视图中进行显示。

如果请求中没有指明具体的控制器,CI会将页面重定向到一个系统默认的控制器中进行处理,这个默认控制器可以在config/routes.php文件中进行设置,

$route['default_controller'] = "welcome";

如果你不设定默认值,那么请求会被定向到’404 not found’页面去的。此外,如果没有指定函数,那么/index会被默认选中。

你可能会注意到CI有两组辅助函数,类库,一组在application文件夹中,另一组放在system文件夹中。两者的区别在于,system文件夹中的代码是CI的核心代码,所有项目都会使用,如果升级到一个新版本CI,那么这些文件会被修改,而那些在application文件夹中的代码只能用于一个应用程序,升级新版本CI时,不会被覆盖。当你装载一个辅助函数或类库时,CI会首先在system/application/libraries文件夹中查找,找不到的情况下再到system/libraries下查找。

设计一个视图一般需要三个步骤,1)编写一个视图页面2)编写一个形式表3)修改c onfig文件以指定样式表的位置。

分享到:
评论

相关推荐

    CodeIgniter 相关文档资料

    CodeIgniter 相关文档资料,包括中文手册,使用教程,以及框架分析

    codeigniter源代码函数中文解释

    codeigniter框架的源代码,代码文件的结构比较清晰,又index.php作为入口,在codeigniter.php文件中加载所有的基础类,于是我挨个类滴看下去,并且在看的时候分析了每一步关键的进程,而且对原来的英文注释进行了翻译,现在...

    CodeIgniter:php敏捷开发框架web快速开发详解

    这篇文章是有关 CodeIgniter 的(以下简称 CI),CI 是一个达成以上目标的框架。 如果你只是要达成一个最终的结果,而把中间所有的编码细节和复杂统统丢给一个框架,CI 是你最好的朋友。 CI 有很多优点:免费,轻...

    Codeigniter 4.0-dev 版源码学习笔记之六——控制器

    其实一开始我是很纠结是否要写控制器的源码分析的,因为控制器的源码太少了,少到你不相信这是一个 MVC 里的一个重头。直觉里,大家都觉得控制器作为各个请求的“入口”,其后端应该有很多很多的代码支撑才可以的,...

    CodeIgniter配置之SESSION用法实例分析

    本文实例讲述了CodeIgniter配置之SESSION用法。分享给大家供大家参考,具体如下: 刚使用Codeigniter时也被其中的SESSION迷惑过,后来就再也没用过CI自带的SESSION,想必还是有必要整理一下SESSION。为弄清CI中的...

    codeigniter显示所有脚本执行时间的方法

    具体分析如下: 如果你想显示所有脚本的执行时间,请将下面的代码加入到view里面 <?php echo $this->benchmark- >elapsed_time() ; ?> 也可以使用下面的伪变量 { elapsed_time} 希望本文所述对大家基于...

    CodeIgniter框架数据库基本操作示例

    主要介绍了CodeIgniter框架数据库基本操作,结合实例形式分析了CodeIgniter框架针对mysql数据库的配置、用户注册、信息查询、修改及删除等基本操作技巧,需要的朋友可以参考下

    php框架CodeIgniter使用redis的方法分析

    主要介绍了php框架CodeIgniter使用redis的方法,结合实例形式分析了redis的安装、设置及CodeIgniter使用redis的相关操作技巧与注意事项,需要的朋友可以参考下

    CodeIgniter集成smarty的方法详解

    主要介绍了CodeIgniter集成smarty的方法,结合实例形式详细分析了CodeIgniter集成Smarty的具体步骤与相关注意事项,需要的朋友可以参考下

    CodeIgniter配置之database.php用法实例分析

    本文实例分析了CodeIgniter配置之database.php用法。分享给大家供大家参考,具体如下: CodeIgniter的数据库配置文件位于application/config/database.php, 该文件中定义了$db的二维数组,参考文件如下: $active_...

    CodeIgniter辅助之第三方类库third_party用法分析

    主要介绍了CodeIgniter辅助之第三方类库third_party用法,以CI集成Twig模版为例分析了CodeIgniter集成第三方类库的实现步骤与相关技巧,需要的朋友可以参考下

    CodeIgniter配置之autoload.php自动加载用法分析

    本文实例分析了CodeIgniter配置之autoload.php自动加载用法。分享给大家供大家参考,具体如下: CodeIgniter带了自动加载的功能,可以全局加载类库、模型、配置、语言包等,对于需要全局使用的功能相当方便。 例如:...

    CodeIgniter记录错误日志的方法全面总结

    主要介绍了CodeIgniter记录错误日志的方法,详细分析了CodeIgniter框架的文件结构与相应的功能,结合实例分析了CodeIgniter框架记录错误日志的实现技巧,并分析了隐藏index文件与数据传输等技巧,总结非常全面,需要的...

    Codeigniter利用加密Key(密钥)的对象注入漏洞

    今天,我决定来分析一下Codeigniter的PHP对象注入漏洞。我在接下来的叙述中会把重点放在Codeigniter的Session会话机制上。所有我将会分析的method方法都在CodeIgniter/system/libraries/Session.php文件里。我在本...

    CI(CodeIgniter)模型用法实例分析

    主要介绍了CI(CodeIgniter)模型用法,结合实例形式分析了CodeIgniter框架中模型的功能、使用方法与相关注意事项,需要的朋友可以参考下

    CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析

    主要介绍了CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患,结合实例形式分析了CodeIgniter框架中针对特殊字符的过滤及SQL注入隐患的相关原理,需要的朋友可以参考下

    CodeIgniter读写分离实现方法详解

    主要介绍了CodeIgniter读写分离实现方法,结合实例形式较为详细的分析了CodeIgniter读写分离的相关配置与功能实现技巧,需要的朋友可以参考下

    CodeIgniter分页类pagination使用方法示例

    主要介绍了CodeIgniter分页类pagination使用方法,结合实例形式简单分析了CodeIgniter框架中的分页类pagination基本的配置与使用技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics