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文件以指定样式表的位置。 

posted on   Phinecos(洞庭散人)  阅读(2043)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述

导航

统计

点击右上角即可分享
微信分享提示