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”。
在浏览器中访问第二个URI,我们得到与上图所示相同的输出。在这里,我们在URI控制器的名字后面传递了方法的名字。因为方法的名称是“index”,所以我们得到了相同的输出。
在浏览器中访问第三个URI,我们得到如下图所示的输出。正如您所看到的,我们正在得到方法“hello”的输出,因为我们已经通过了“hello”作为方法名,在URI控制器“test”的名称之后。
需要记住的要点
控制器类的名称必须以大写字母开头。
控制器必须用小写字母调用。
不要使用与父类相同的方法名,因为它将覆盖父类的功能。
视图
视图是一个网页,可以由控制器调用。网页可以包含页眉、页脚、侧栏等。视图不能直接访问必须通过控制器访问。让我们创建一个简单的视图。在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'); } } ?>
以下是上述代码的输出
下面的流程图说明了一切是如何工作的。
模型
模型类被设计用来处理数据库相关的信息。例如,如果您使用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();
如上图所示,当系统处于初始化状态并且可以在整个应用程序中访问时,在要自动加载的数组中传递模型的名称,它将被自动加载。