CodeIgniter基本概念


控制器

控制器是一个简单的类文件。顾名思义,它通过URI控制整个应用程序。

创建一个控制器

首先,进入 应用程序/控制器 文件夹。你会在那里找到两个文件, index.htmlWelcome.php 。这些文件随CodeIgniter提供。

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

<?php
   class Test extends CI_Controller {

      public function index() {
         echo "Hello World!";
      }
   }
?>

测试 类扩展称为内置类 是CI_Controller 。无论何时想要创建自己的Controller类,都必须扩展此类。

调用控制器

上面的控制器可以通过URI调用如下 -

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

在index.php后面的URI中注意单词“ test ”。 这表示控制器的类名称。正如我们给出了控制器“ 测试 ” 的名称,我们正在编写index.php后面的“ 测试 ”。 类名必须以 大写字母开头, 但是当我们通过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中的控制器名称之后传递了方法名称。由于该方法的名称是“ 索引 ”,我们得到的是相同的输出。

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

你好输出

要记住的要点

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

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

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

查看

这可以是一个简单或复杂的网页,可以由控制器调用。该网页可能包含页眉,页脚,侧边栏等视图不能直接调用。让我们创建一个简单的视图。在名称为 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代码存储在 application / views / test.php 下的“ test.php ”文件中 。 **

<? php
   class Test extends CI_Controller {

      public function index() {
         $this->load->view('test');
      }
   }
?>

以上是上述代码的输出 -

测试输出

以下流程图说明了一切工作原理 -

流程图

楷模

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

创建模型类

模型类存储在 应用程序/模型 目录中。以下代码显示了如何在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中提供了许多帮助程序,这些帮助程序在下表中列出。我们也可以建立我们自己的帮手。

助手通常存储在 系统/帮助 程序应用程序/帮助程序目录中 。自定义帮助 程序 存储在 应用程序/帮助程序 目录中,系统的帮助程序存储在 系统/帮助程序 目录中。CodeIgniter将首先在您的 应用程序/帮助程序目录中 查找。如果该目录不存在或者指定的帮助程序不在,CodeIgniter将改为查看您的全局 系统/帮助程序 /目录 。无论是自定义还是系统助手,每个助手都必须在使用前加载。

____以下给出的是最常用的助手。

编号 助手名称和说明
1 Array Helper 数组助手文件包含帮助处理数组的函数。
2 CAPTCHA Helper CAPTCHA帮助程序文件包含帮助创建CAPTCHA图像的功能。
3 Cookie Helpe Cookie助手文件包含有助于使用Cookie的功能。
4 Date Helper 日期助手文件包含帮助您处理日期的函数。
5 Directory Helper 目录助手文件包含帮助处理目录的功能。
6 Download Helper 下载助手允许您将数据下载到桌面。
7 Email Helper 电子邮件帮助程序为使用电子邮件提供了一些辅助功能。有关更强大的电子邮件解决方案,请参阅CodeIgniter的电子邮件类。
8 File Helper File Helper文件包含有助于处理文件的函数。
9 Form Helper Form Helper文件包含有助于处理表单的函数。
10 HTML Helper HTML Helper文件包含有助于使用HTML的函数。
11 Inflector Helper Inflector Helper文件包含的功能允许您将单词更改为复数,单数,驼峰等。
12 Language Helper 语言助手文件包含有助于处理语言文件的功能。
13 Number Helper Number Helper文件包含可帮助您处理数字数据的函数。
14 Path Helper Path Helper文件包含允许您使用服务器上的文件路径的功能。
15 Security Helper Security Helper文件包含与安全相关的功能。
16 Smiley Helper Smiley Helper文件包含可以管理表情符号(表情符号)的功能。
17 String Helper String Helper文件包含有助于处理字符串的函数。
18 Text Helper Text Helper文件包含有助于处理文本的函数。
19 Typography Helper Typography Helper文件包含的功能可帮助您以语义相关的方式格式化文本。
20 URL Helper URL帮助程序文件包含有助于处理URL的函数。
21 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中有三条保留路由。

SN 保留路由和描述
1 $route['default_controller'] 如果URI不包含数据,则此路由指示应加载哪个控制器类,这将在人们加载根URL时进行。鼓励您使用默认路由,否则默认情况下会出现404页面。我们可以在这里设置网站的主页,因此它会默认加载。
2 $route[ '404_override'] 如果未找到请求的控制器,则此路线指示应加载哪个控制器类。它将覆盖默认的404错误页面。它不会影响 show_404() 函数,该函数将继续加载 _application / views / errors / error_404.php_ 的默认 _error_404.php_ 文件。
3 $route[ 'translate_uri_dashes'] 如布尔值所示,这不完全是一条路线。该选项使您能够自动替换控制器中的下划线和方法URI段的破折号(' - '),从而在需要时为您节省额外的路由条目。这是必需的,因为破折号不是有效的类或方法名字符,并且如果尝试使用它将导致致命错误。

路由可以通过 通配符 或使用 正则表达式 进行自定义,但请记住,这些自定义路由规则必须符合保留规则。

通配符

我们可以使用两个通配符,如下所述 -

  • (:num) - 它将匹配仅包含数字的段。

  • (:any) - 它将匹配包含任何字符的段。

$route['product/:num']='catalog/product_lookup';

在上例中,如果在URL的第一个段中找到文字词“product”,并且在第二个段中找到了一个数字,则将使用“catalog”类和“product_lookup”方法。

常用表达

像通配符一样,我们也可以在 $ route数组关键 部分中使用正则表达式。如果任何URI与正则表达式匹配,则它将被路由到设置到$ route数组中的值部分。

$route['products/([a-z]+)/(\d+)']='$1/id_$2';

在上面的示例中,类似于products / shoes / 123的URI将改为调用“ shoes ”控制器类和“ id_123 ”方法。