69pao国产精品视频-久久精品一区二区二三区-精品国产精品亚洲一本大道-99国产综合一区久久

CodeIgniter 基本概念


控制器

控制器是一個(gè)簡(jiǎn)單的類(lèi)文件。顧名思義,它通過(guò)uri控制整個(gè)應(yīng)用程序。

 

創(chuàng)建控制器

首先,轉(zhuǎn)到 application/controllers 文件夾。您會(huì)在那里找到兩個(gè)文件, index.html 和 welcome.php。這些文件隨 codeigniter 一起提供。

保持這些文件原樣。在同一路徑下創(chuàng)建一個(gè)名為" test.php"的新文件。在該文件中寫(xiě)入以下代碼:

 
   class test extends ci_controller {
  
      public function index() { 
         echo "hello world!"; 
      } 
   } 

test 類(lèi)擴(kuò)展了一個(gè)名為 ci_controller 的內(nèi)置類(lèi)。每當(dāng)您想創(chuàng)建自己的 controller 類(lèi)時(shí),都必須擴(kuò)展該類(lèi)。

 

調(diào)用控制器

上面的控制器可以通過(guò) uri 調(diào)用,如下所示:

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

注意上面 uri 中 index.php 后面的" test"這個(gè)詞。這表示控制器的類(lèi)名。正如我們已經(jīng)給出的控制器名稱(chēng)" test",我們?cè)趇ndex.php之后寫(xiě)" test"。類(lèi)名必須以 大寫(xiě)字母開(kāi)頭,但我們需要寫(xiě) 小寫(xiě)字母 當(dāng)我們通過(guò) uri 調(diào)用該控制器時(shí)。調(diào)用控制器的一般語(yǔ)法如下:

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

 

創(chuàng)建和調(diào)用構(gòu)造函數(shù)

讓我們修改上面的類(lèi)并創(chuàng)建另一個(gè)名為"hello"的方法。

 
   class test extends ci_controller {  
  
      public function index() { 
         echo "this is default function."; 
      } 
  
      public function hello() { 
         echo "this is hello function."; 
      } 
   } 

我們可以通過(guò)以下三種方式執(zhí)行上述控制器:

  • 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

在瀏覽器中訪問(wèn)第一個(gè) uri 后,我們得到如下圖所示的輸出。如您所見(jiàn),我們得到了方法" index"的輸出,即使我們沒(méi)有將方法的名稱(chēng)傳遞給 uri。我們?cè)?uri 中只使用了控制器名稱(chēng)。在這種情況下,codeigniter 調(diào)用默認(rèn)方法" index"。

在瀏覽器中訪問(wèn)第二個(gè) uri,我們得到與上圖相同的輸出。在這里,我們?cè)?uri 中的控制器名稱(chēng)之后傳遞了方法名稱(chēng)。由于該方法的名稱(chēng)是" index",因此我們得到了相同的輸出。

在瀏覽器中訪問(wèn)第三個(gè) uri,我們得到如下圖所示的輸出。如您所見(jiàn),我們正在獲取方法" hello"的輸出,因?yàn)槲覀冊(cè)诳刂破髅Q(chēng)" test"在 uri 中。

 

要記住的要點(diǎn)

  • 控制器類(lèi)的名稱(chēng)必須以大寫(xiě)字母開(kāi)頭。
  • 必須使用小寫(xiě)字母調(diào)用控制器。
  • 不要使用與父類(lèi)相同的方法名稱(chēng),因?yàn)樗鼤?huì)覆蓋父類(lèi)的功能。

 

觀看次數(shù)

這可以是簡(jiǎn)單或復(fù)雜的網(wǎng)頁(yè),可以由控制器調(diào)用。網(wǎng)頁(yè)可能包含頁(yè)眉、頁(yè)腳、側(cè)邊欄等。不能直接調(diào)用視圖。讓我們創(chuàng)建一個(gè)簡(jiǎn)單的視圖。在 application/views 下創(chuàng)建一個(gè)名為" test.php"的新文件,并將下面給定的代碼復(fù)制到該文件中。

 
 
    
       
      codeigniter view example 
   
  
    
      codeigniter view example 
   
  

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

 

加載視圖

可以通過(guò)以下語(yǔ)法加載視圖:

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

其中 name 是正在渲染的視圖文件。如果您計(jì)劃將視圖文件存儲(chǔ)在某個(gè)目錄中,那么您可以使用以下語(yǔ)法:

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

沒(méi)有必要將擴(kuò)展名指定為 php,除非使用了 .php 以外的內(nèi)容。

index() 方法正在調(diào)用 view 方法并將"test"作為參數(shù)傳遞給 view() 方法,因?yàn)槲覀円呀?jīng)將 html 編碼存儲(chǔ)在 下的"test.php"文件中>application/views/test.php.

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

這是上面代碼的輸出:

以下流程圖說(shuō)明了一切是如何工作的:

 

模型

模型類(lèi)旨在處理數(shù)據(jù)庫(kù)中的信息。例如,如果您在應(yīng)用程序中使用 codeigniter 管理用戶,那么您必須有模型類(lèi),其中包含插入、刪除、更新和檢索用戶數(shù)據(jù)的函數(shù)。

 

創(chuàng)建模型類(lèi)

模型類(lèi)存儲(chǔ)在 application/models 目錄中。以下代碼展示了如何在 codeigniter 中創(chuàng)建模型類(lèi)。

 
   class model_name extends ci_model { 
  
      public function __construct() { 
         parent::__construct(); 
      } 
   } 
 

其中 model_name 是您要提供的模型類(lèi)的名稱(chēng)。每個(gè)模型類(lèi)都必須繼承 codeigniter 的 ci_model 類(lèi)。模型類(lèi)的第一個(gè)字母必須是大寫(xiě)字母。以下是用戶模型類(lèi)的代碼。

 
   class user_model extends ci_model {
  
      public function __construct() { 
         parent::__construct(); 
      } 
    
   } 

以上模型類(lèi)必須保存為user_model.php。類(lèi)名和文件名必須相同。

 

加載模型

模型可以在控制器中調(diào)用。以下代碼可用于加載任何模型。

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

其中model_name 是要加載的模型的名稱(chēng)。加載模型后,您可以簡(jiǎn)單地調(diào)用其方法,如下所示。

$this->model_name->method();

 

自動(dòng)加載模型

在某些情況下,您可能需要在整個(gè)應(yīng)用程序中使用某個(gè)模型類(lèi)。在這種情況下,我們最好自動(dòng)加載它。

/*
|---------------------------------------------------------------
|  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();

如上圖所示,在數(shù)組中傳入要自動(dòng)加載的模型名稱(chēng),系統(tǒng)會(huì)自動(dòng)加載,此時(shí)系統(tǒng)處于初始化狀態(tài),整個(gè)應(yīng)用程序都可以訪問(wèn)。

 

幫手

顧名思義,它將幫助您構(gòu)建系統(tǒng)。它被分成小功能以提供不同的功能。 codeigniter 中提供了許多幫助程序,如下表所示。我們也可以構(gòu)建自己的助手。

helper 通常存儲(chǔ)在您的 system/helpers 或 application/helpers 目錄中。自定義助手存儲(chǔ)在 application/helpers 目錄中,系統(tǒng)的助手存儲(chǔ)在 system/helpers 目錄中。 codeigniter 將首先查看您的 application/helpers 目錄。如果該目錄不存在或未找到指定的幫助程序,codeigniter 將改為查找您的全局 system/helpers/目錄。每個(gè)helper,無(wú)論是自定義的還是系統(tǒng)的helper,在使用前都必須加載。

名稱(chēng)和描述

array helper

array helper 文件包含有助于處理數(shù)組的函數(shù)。

captcha helper

captcha helper 文件包含有助于創(chuàng)建 captcha 圖像的功能。

cookie helper

cookie helper 文件包含幫助處理 cookie 的函數(shù)。

date helper

date helper 文件包含幫助您處理日期的函數(shù)。

directory helper

directory helper 文件包含有助于處理目錄的函數(shù)。

download helper

download helper可讓您將數(shù)據(jù)下載到桌面。

email helper

email helper 提供了一些使用電子郵件的輔助功能。如需更強(qiáng)大的電子郵件解決方案,請(qǐng)參閱 codeigniter 的電子郵件類(lèi)。

file helper

file helper 文件包含有助于處理文件的函數(shù)。

form helper

form helper 文件包含幫助處理表單的函數(shù)。

html helper

html helper 文件包含有助于處理 html 的函數(shù)。

inflector helper

inflector helper 文件包含允許您將單詞更改為復(fù)數(shù)、單數(shù)、駝峰式等的功能。

language helper

language helper 文件包含有助于處理語(yǔ)言文件的函數(shù)。

number helper

number helper 文件包含幫助您處理數(shù)字?jǐn)?shù)據(jù)的函數(shù)。

path helper

path helper 文件包含允許您使用服務(wù)器上的文件路徑的函數(shù)。

security helper

security helper 文件包含安全相關(guān)的功能。

smiley helper

smiley helper 文件包含可讓您管理笑臉(表情符號(hào))的功能。

string helper

string helper 文件包含有助于處理字符串的函數(shù)。

text helper

text helper 文件包含有助于處理文本的函數(shù)。

typography helper

typography helper 文件包含的函數(shù)可以幫助您以語(yǔ)義相關(guān)的方式格式化文本。

url helper

url helper 文件包含有助于處理 url 的函數(shù)。

xml helper

xml helper 文件包含有助于處理 xml 數(shù)據(jù)的函數(shù)。

 

加載助手

可以如下所示加載幫助程序:

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

其中 name 是助手的名稱(chēng)。例如,如果你想加載 url helper,那么它可以加載為:

$this->load->helper('url');

 

路由

codeigniter 具有用戶友好的 uri 路由系統(tǒng),讓您可以輕松地重新路由 url。通常,url 字符串與其對(duì)應(yīng)的控制器類(lèi)/方法之間存在一對(duì)一的關(guān)系。 uri 中的段通常遵循此模式:

your-domain.com/class/method/id/
  • 第一段代表應(yīng)該被調(diào)用的控制器類(lèi)。
  • 第二段表示應(yīng)該調(diào)用的類(lèi)函數(shù)或方法。
  • 第三個(gè)和任何其他段,代表 id 和將傳遞給控制器??的任何變量。

在某些情況下,您可能希望更改此默認(rèn)路由機(jī)制。 codeigniter 提供了工具,您可以通過(guò)它來(lái)設(shè)置自己的路由規(guī)則。

 

自定義路由規(guī)則

有一個(gè)特定的文件可以處理所有這些。該文件位于 application/config/routes.php。您將找到一個(gè)名為 $route 的數(shù)組,您可以在其中自定義路由規(guī)則。 $route 數(shù)組中的鍵將決定路由的內(nèi)容,值將決定路由的位置。 codeigniter 中保留了三個(gè)路由。

reserved routes & description

$route['default_controller']

這個(gè)路由指示應(yīng)該加載哪個(gè)控制器類(lèi),如果uri不包含數(shù)據(jù),這將是這種情況人們加載您的根 url。鼓勵(lì)您使用默認(rèn)路由,否則默認(rèn)情況下會(huì)出現(xiàn) 404 頁(yè)面。我們可以在此處設(shè)置網(wǎng)站首頁(yè),以便默認(rèn)加載。

$route['404_override']

此路由指示如果未找到請(qǐng)求的控制器,應(yīng)加載哪個(gè)控制器類(lèi)。它將覆蓋默認(rèn)的 404 錯(cuò)誤頁(yè)面。它不會(huì)影響 show_404() 函數(shù),該函數(shù)將繼續(xù)加載 中的默認(rèn) error_404.php 文件application/views/errors/error_404.php.

$route['translate_uri_dashes']

從布爾值可以看出,這并不完全是一條路線。此選項(xiàng)使您能夠在控制器和方法 uri 段中用下劃線自動(dòng)替換破折號(hào) (‘-‘),從而在需要時(shí)為您節(jié)省額外的路由條目。這是必需的,因?yàn)槠普厶?hào)不是有效的類(lèi)或方法名稱(chēng)字符,如果您嘗試使用它,將導(dǎo)致致命錯(cuò)誤。

可以通過(guò) 通配符或使用 正則表達(dá)式自定義路由,但請(qǐng)記住,這些自定義路由規(guī)則必須在保留規(guī)則之后。

 

通配符

我們可以使用兩個(gè)通配符,如下所述:

  • (:num)-它將匹配僅包含數(shù)字的段。
  • (:any)-它將匹配包含任何字符的段。

示例

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

在上面的示例中,如果在 url 的第一段中找到文字單詞"product",而在第二段中找到數(shù)字,則使用"catalog"類(lèi)和"product_lookup"方法代替。

 

正則表達(dá)式

和通配符一樣,我們也可以在 $route array key 部分使用正則表達(dá)式。如果任何 uri 與正則表達(dá)式匹配,那么它將被路由到設(shè)置到 $route 數(shù)組中的值部分。

示例

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

在上面的示例中,類(lèi)似于 products/shoes/123 的 uri 將改為調(diào)用" shoes"控制器類(lèi)和" id_123"方法。

相關(guān)文章