开发学院

您的位置:首页>教程>正文

教程正文

CodeIgniter教程: 基本概念(一)

控制器

  控制器是一个类文件,它控制着整个应用程序的URI。

创建控制器

  首先,转到application/controllers文件夹。你会在那里找到两个文件,index.html和Welcome.php。这些文件随CodeIgniter一起提供。

  保持这些文件原样。在同一路径下创建一个名为Test的新文件,在该文件中写入以下代码。

<?php 
   class Test extends CI_Controller {
      public function index() { 
         echo "Hello World!"; 
      } 
   } 
?>

  Test类继承了一个名为CI_Controller的内置类。每当您想创建自己的控制器类时,必须继承该类。

调用控制器

  我们可以通过URI调用上述控制器,如下所示:

http://www.your-domain.com/index.php/test

  注意上面URI中index.php后面的test表示控制器的类名。由于我们已经给控制器命名为test,所以我们在index.php之后写test。类名必须以大写字母开头,但是当URI调用控制器时,我们需要写小写字母。调用控制器的一般语法如下:

http://www.your-domain.com/index.php/controller/method-name

创建和调用构造函数方法

  让我们修改上面的类,并创建另一个名为“hello”的方法。

<?php 
   class Test extends CI_Controller {  
      public function index() { 
         echo "This is default function."; 
      } 
      public function hello() { 
         echo "This is hello function."; 
      } 
   } 
?>

  我们可以通过以下三种方式执行上述控制器。

http://www.your-domain.com/index.php/test
http://www.your-domain.com/index.php/test/index
http://www.your-domain.com/index.php/test/hello

  在浏览器中访问第一个URI之后,我们得到如下图所示的输出。如你所见,我们得到了方法“index”的输出,尽管我们没有传递方法的名字URI。我们在URI只使用了控制器名称。在这种情况下,CodeIgniter调用默认方法“index”。

index_output.jpg

  在浏览器中访问第二个URI,我们得到与上图所示相同的输出。在这里,我们在URI控制器的名字后面传递了方法的名字。因为方法的名称是“index”,所以我们得到了相同的输出。

  在浏览器中访问第三个URI,我们得到如下图所示的输出。正如您所看到的,我们正在得到方法“hello”的输出,因为我们已经通过了“hello”作为方法名,在URI控制器“test”的名称之后。

hello_output.jpg

需要记住的要点

  控制器类的名称必须以大写字母开头。

  控制器必须用小写字母调用。

  不要使用与父类相同的方法名,因为它将覆盖父类的功能。

视图

  视图是一个网页,可以由控制器调用。网页可以包含页眉、页脚、侧栏等。视图不能直接访问必须通过控制器访问。让我们创建一个简单的视图。在application/views下创建一个名为“test.php”的新文件,并将下面给定的代码复制到该文件中。

<!DOCTYPE html> 
<html lang = "en"> 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
   <body> 
      CodeIgniter View Example 
   </body>
</html>

  更改application/controllers/test.php文件的代码,如下所示。

加载视图

  可以通过以下语法加载视图

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

  其中name是需要呈现的视图文件。如果您计划将视图文件存储在某个目录中,则可以使用以下语法

$this->load->view('directory-name/name');

  php后缀是没有必要写的。

  index()方法调用view方法并将test作为参数传递给view()方法,因为我们已经将html代码存储在application/views/test.php下的test.php文件中。

<?php 
   class Test extends CI_Controller { 
      public function index() { 
         $this->load->view('test'); 
      } 
   } 
?>

以下是上述代码的输出

test_output.jpg

  下面的流程图说明了一切是如何工作的。

flow_charts.jpg

模型

  模型类被设计用来处理数据库相关的信息。例如,如果您使用CodeIgniter来管理应用程序中的用户,那么您必须有模型类,它包含插入、删除、更新和检索用户数据的函数。

创建模型类

  模型类存储在application/models目录中。下面的代码显示了如何在CodeIgniter中创建模型类。

<?php 
   Class Model_name extends CI_Model { 
      Public function __construct() { 
         parent::__construct(); 
      } 
   } 
?>

  其中,模型名称是您要给出的模型类的名称。每个模型类必须继承CodeIgniter的CI_Model类。模型类的第一个字母必须是大写字母。下面是用户模型类的代码。

<?php 
   Class User_model extends CI_Model {
      Public function __construct() { 
         parent::__construct(); 
      } 
   } 
?>

  上述模型类必须保存为用户模型。类名和文件名必须相同。

加载模型类

  模型可以在控制器中调用。以下代码可用于加载任何模型。

$this->load->model('model_name');

  其中model_name是要加载的模型的名称。加载模型后,您可以简单地调用它的方法,如下所示。

$this->model_name->method();

自动加载模型类

  在某些情况下,您可能需要在整个应用程序中使用一些模型类。在这种情况下,我们最好自动加载它。

/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|  
|   $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();

  如上图所示,当系统处于初始化状态并且可以在整个应用程序中访问时,在要自动加载的数组中传递模型的名称,它将被自动加载。