📜  CodeIgniter-应用程序体系结构(1)

📅  最后修改于: 2023-12-03 14:59:58.283000             🧑  作者: Mango

CodeIgniter-应用程序体系结构

CodeIgniter是一种基于模型-视图-控制器(MVC)的快速开发Web应用程序框架。它提供了一套简洁、优雅的工具,使您能够快速建立功能完整、易于扩展的Web应用程序。

1. MVC结构

在CodeIgniter中,应用程序的逻辑部分被分为三个部分:模型、视图和控制器。

1.1 模型

模型处理应用程序的数据。它们通常与数据库打交道,进行数据的获取、存储和修改。模型负责处理数据的逻辑,使得应用程序的其他部分可以使用这些逻辑,而不是与数据库直接进行交互。

1.2 视图

视图呈现应用程序的用户界面。它们负责将数据以可视化的方式呈现给用户。视图可以是HTML页面、XML文档、PDF文件等,取决于应用程序的需求。视图通常与模板引擎(如Smarty)一起使用。

1.3 控制器

控制器协调应用程序的逻辑和用户界面。它们负责响应用户的请求,向模型请求数据,向视图呈现数据。控制器扮演着应用程序的指挥官的角色,通过组织模型和视图,将它们打包在一起创建出一个完整的Web应用程序。

2. 应用程序架构

在CodeIgniter中,应用程序的逻辑部分主要由以下四个部分组成:控制器、模型、视图和辅助函数。

2.1 控制器

控制器是CodeIgniter应用程序体系结构的核心部分。控制器协调着模型和视图,使其协同工作,实现一个功能完整的Web应用。它们向应用程序内部和外部负责提供一个接口。

2.1.1 控制器的命名规则

在CodeIgniter中,控制器的命名规则相当简单。一个控制器通常称为一个类文件,类名应该是首字母大写 CamelCase,并以“_Controller”结尾。例如:

class Users_Controller extends CI_Controller {

}

2.1.2 控制器的用法

在CodeIgniter中,控制器用于响应用户请求。以下是一个简单的控制器示例:

class Blog_Controller extends CI_Controller {

        public function index()
        {
                echo 'Hello World!';
        }

        public function comments()
        {
                echo 'Look at this!';
        }
}

在上面的示例中,“index”方法响应默认请求,例如 http://example.com/index.php/blog 即会调用index方法,并输出“Hello World!”;而“comments”方法响应如http://example.com/index.php/blog/comments这样的请求,输出“Look at this!”。

2.2 模型

在CodeIgniter中,模型处理应用程序的数据。它们通常与数据库打交道,进行数据的获取、存储和修改。同样,一个模型通常是一个类文件,它根据需要包含必要的函数来完成特定任务。

2.2.1 模型的命名规则

在CodeIgniter中,模型的命名规则及控制器非常相似。一个模型通常称为一个类文件,类名应该是首字母大写 CamelCase,并以“_Model”结尾。

2.2.2 模型的用法

在一个典型的CodeIgniter使用案例中,控制器调用模型来进行数据的存取。以下示例展示了一个数据模型:

class Blog_Model extends CI_Model {

        public function __construct()
        {
                parent::__construct();
        }

        public function get_last_ten_entries()
        {
                $query = $this->db->get('blog', 10);
                return $query->result();
        }

        public function insert_entry()
        {
                $this->title    = $_POST['title']; // 请防止 SQL 注入攻击
                $this->content  = $_POST['content'];
                $this->date     = time();

                $this->db->insert('blog', $this);
        }

        public function update_entry()
        {
                $this->title    = $_POST['title'];
                $this->content  = $_POST['content'];
                $this->date     = time();

                $this->db->update('blog', $this, array('id' => $_POST['id']));
        }

}

上面的示例中,模型调用CI类库的db对象从数据库中获取博客最近的十篇内容(get_last_ten_entries方法),或向数据库中添加一个新博客(insert_entry方法),或则更新一个已有博客(update_entry方法)。

2.3 视图

CodeIgniter的视图是Web应用程序的可视化窗口,其目的是将模型和控制器中的数据呈现给用户。视图文件展示了Web应用程序的页面。

一个视图通常是一个HTML文件,以PHP文件的形式存在。通常情况下,视图文件应该放置在CodeIgniter应用程序目录下的“application/views”文件夹内。视图可以通过控制器调用,如下所示:

$this->load->view('blogview', $data);

在上面的示例中,“blogview”是视图文件的名称,“$data”是从模型或控制器传递的数组或对象,用于展示数据。

2.4 辅助函数

除了控制器、模型、视图外,CodeIgniter还提供了一些辅助函数。这些辅助函数能够简化常见的Web应用开发任务,如表单验证、字符串操作等。

CodeIgniter的辅助函数可以在控制器、模型、视图文件中引用,也可以在自定义辅助函数库中使用。以下是一个示例:

if ( ! function_exists('valid_email'))
{
        function valid_email($str)
        {
                return (bool) filter_var($str, FILTER_VALIDATE_EMAIL);
        }
}

在上面的例子中,函数库中的valid_email函数用于验证电子邮件地址是否有效,并使用PHP内置的过滤器函数“FILTER_VALIDATE_EMAIL”进行检查。valid_email函数使用了PHP的“filter_var”函数,该函数可用于验证其他数据类型。在应用程序开发的过程中,您可以添加自己的辅助函数,以便简化和提高代码的重用性。

3. 结论

CodeIgniter的应用程序体系结构基于MVC结构,并提供了一套简洁明了的工具,简化了常见的Web开发任务。CodeIgniter提供了一个简单有效的Web开发框架,开发者可以使用该框架构建灵活可扩展的Web应用程序。