CodeIgniter 基本概念
控制器
控制器是一个简单的类文件。顾名思义,它通过URI控制整个应用程序。
创建控制器
首先,转到 application/controllers 文件夹。您会在那里找到两个文件, index.html 和 Welcome.php。这些文件随 CodeIgniter 一起提供。
保持这些文件原样。在同一路径下创建一个名为" Test.php"的新文件。在该文件中写入以下代码:
<?php class Test extends CI_Controller { public function index() { echo "Hello World!"; } } ?>
Test 类扩展了一个名为 CI_Controller 的内置类。每当您想创建自己的 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"的输出,因为我们在控制器名称" test"在 URI 中。
要记住的要点
- 控制器类的名称必须以大写字母开头。
- 必须使用小写字母调用控制器。
- 不要使用与父类相同的方法名称,因为它会覆盖父类的功能。
观看次数
这可以是简单或复杂的网页,可以由控制器调用。网页可能包含页眉、页脚、侧边栏等。不能直接调用视图。让我们创建一个简单的视图。在 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,除非使用了 .php 以外的内容。
index() 方法正在调用 view 方法并将"test"作为参数传递给 view() 方法,因为我们已经将 html 编码存储在 下的"test.php"文件中>application/views/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(); } } ?>
其中 Model_name 是您要提供的模型类的名称。每个模型类都必须继承 CodeIgniter 的 CI_Model 类。模型类的第一个字母必须是大写字母。以下是用户模型类的代码。
<?php class User_model extends CI_Model { public function __construct() { parent::__construct(); } } ?>
以上模型类必须保存为User_model.php。类名和文件名必须相同。
加载模型
模型可以在控制器中调用。以下代码可用于加载任何模型。
$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();
如上图所示,在数组中传入要自动加载的模型名称,系统会自动加载,此时系统处于初始化状态,整个应用程序都可以访问。
帮手
顾名思义,它将帮助您构建系统。它被分成小功能以提供不同的功能。 CodeIgniter 中提供了许多帮助程序,如下表所示。我们也可以构建自己的助手。
Helper 通常存储在您的 system/helpers 或 application/helpers 目录中。自定义助手存储在 application/helpers 目录中,系统的助手存储在 system/helpers 目录中。 CodeIgniter 将首先查看您的 application/helpers 目录。如果该目录不存在或未找到指定的帮助程序,CodeIgniter 将改为查找您的全局 system/helpers/目录。每个helper,无论是自定义的还是系统的helper,在使用前都必须加载。
名称和描述 |
Array Helper Array Helper 文件包含有助于处理数组的函数。 |
CAPTCHA Helper CAPTCHA Helper 文件包含有助于创建 CAPTCHA 图像的功能。 |
Cookie Helper Cookie Helper 文件包含帮助处理 cookie 的函数。 |
Date Helper Date Helper 文件包含帮助您处理日期的函数。 |
Directory Helper Directory Helper 文件包含有助于处理目录的函数。 |
Download Helper Download Helper可让您将数据下载到桌面。 |
Email Helper Email Helper 提供了一些使用电子邮件的辅助功能。如需更强大的电子邮件解决方案,请参阅 CodeIgniter 的电子邮件类。 |
File Helper File Helper 文件包含有助于处理文件的函数。 |
Form Helper Form Helper 文件包含帮助处理表单的函数。 |
HTML Helper HTML Helper 文件包含有助于处理 HTML 的函数。 |
Inflector Helper Inflector Helper 文件包含允许您将单词更改为复数、单数、驼峰式等的功能。 |
Language Helper Language Helper 文件包含有助于处理语言文件的函数。 |
Number Helper Number Helper 文件包含帮助您处理数字数据的函数。 |
Path Helper Path Helper 文件包含允许您使用服务器上的文件路径的函数。 |
Security Helper Security Helper 文件包含安全相关的功能。 |
Smiley Helper Smiley Helper 文件包含可让您管理笑脸(表情符号)的功能。 |
String Helper String Helper 文件包含有助于处理字符串的函数。 |
Text Helper Text Helper 文件包含有助于处理文本的函数。 |
Typography Helper Typography Helper 文件包含的函数可以帮助您以语义相关的方式格式化文本。 |
URL Helper URL Helper 文件包含有助于处理 URL 的函数。 |
XML Helper XML Helper 文件包含有助于处理 XML 数据的函数。 |
加载助手
可以如下所示加载帮助程序:
$this->load->helper('name');
其中 name 是助手的名称。例如,如果你想加载 URL Helper,那么它可以加载为:
$this->load->helper('url');
路由
CodeIgniter 具有用户友好的 URI 路由系统,让您可以轻松地重新路由 URL。通常,URL 字符串与其对应的控制器类/方法之间存在一对一的关系。 URI 中的段通常遵循此模式:
your-domain.com/class/method/id/
- 第一段代表应该被调用的控制器类。
- 第二段表示应该调用的类函数或方法。
- 第三个和任何其他段,代表 ID 和将传递给控制器的任何变量。
在某些情况下,您可能希望更改此默认路由机制。 CodeIgniter 提供了工具,您可以通过它来设置自己的路由规则。
自定义路由规则
有一个特定的文件可以处理所有这些。该文件位于 application/config/routes.php。您将找到一个名为 $route 的数组,您可以在其中自定义路由规则。 $route 数组中的键将决定路由的内容,值将决定路由的位置。 CodeIgniter 中保留了三个路由。
Reserved Routes & Description |
$route['default_controller'] 这个路由指示应该加载哪个控制器类,如果URI不包含数据,这将是这种情况人们加载您的根 URL。鼓励您使用默认路由,否则默认情况下会出现 404 页面。我们可以在此处设置网站首页,以便默认加载。 |
$route['404_override'] 此路由指示如果未找到请求的控制器,应加载哪个控制器类。它将覆盖默认的 404 错误页面。它不会影响 show_404() 函数,该函数将继续加载 中的默认 error_404.php 文件application/views/errors/error_404.php. |
$route['translate_uri_dashes'] 从布尔值可以看出,这并不完全是一条路线。此选项使您能够在控制器和方法 URI 段中用下划线自动替换破折号 (‘-‘),从而在需要时为您节省额外的路由条目。这是必需的,因为破折号不是有效的类或方法名称字符,如果您尝试使用它,将导致致命错误。 |
可以通过 通配符或使用 正则表达式自定义路由,但请记住,这些自定义路由规则必须在保留规则之后。
通配符
我们可以使用两个通配符,如下所述:
- (:num)-它将匹配仅包含数字的段。
- (:any)-它将匹配包含任何字符的段。
示例
$route['product/:num']='catalog/product_lookup';
在上面的示例中,如果在 URL 的第一段中找到文字单词"product",而在第二段中找到数字,则使用"catalog"类和"product_lookup"方法代替。
正则表达式
和通配符一样,我们也可以在 $route array key 部分使用正则表达式。如果任何 URI 与正则表达式匹配,那么它将被路由到设置到 $route 数组中的值部分。
示例
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
在上面的示例中,类似于 products/shoes/123 的 URI 将改为调用" shoes"控制器类和" id_123"方法。
下一章:CodeIgniter 配置
设置好站点后,接下来要做的就是配置站点。 application/config 文件夹包含一组用于设置站点基本配置的文件。 配置基本 URL站点的基本 URL 可以在 applicatio ...