CodeIgniter 基本概念


控制器

控制器是一個簡單的類文件。顧名思義,它通過uri控制整個應(yīng)用程序。

 

創(chuàng)建控制器

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

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

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

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

 

調(diào)用控制器

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

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

注意上面 uri 中 index.php 后面的" test"這個詞。這表示控制器的類名。正如我們已經(jīng)給出的控制器名稱" test",我們在index.php之后寫" test"。類名必須以 大寫字母開頭,但我們需要寫 小寫字母 當我們通過 uri 調(diào)用該控制器時。調(diào)用控制器的一般語法如下:

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

 

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

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

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

我們可以通過以下三種方式執(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

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

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

在瀏覽器中訪問第三個 uri,我們得到如下圖所示的輸出。如您所見,我們正在獲取方法" hello"的輸出,因為我們在控制器名稱" test"在 uri 中。

 

要記住的要點

  • 控制器類的名稱必須以大寫字母開頭。
  • 必須使用小寫字母調(diào)用控制器。
  • 不要使用與父類相同的方法名稱,因為它會覆蓋父類的功能。

 

觀看次數(shù)

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

 
 
    
       
      codeigniter view example 
   
  
    
      codeigniter view example 
   
  

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

 

加載視圖

可以通過以下語法加載視圖:

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

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

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

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

index() 方法正在調(diào)用 view 方法并將"test"作為參數(shù)傳遞給 view() 方法,因為我們已經(jīng)將 html 編碼存儲在 下的"test.php"文件中>application/views/test.php.

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

這是上面代碼的輸出:

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

 

模型

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

 

創(chuàng)建模型類

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

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

其中 model_name 是您要提供的模型類的名稱。每個模型類都必須繼承 codeigniter 的 ci_model 類。模型類的第一個字母必須是大寫字母。以下是用戶模型類的代碼。

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

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

 

加載模型

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

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

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

$this->model_name->method();

 

自動加載模型

在某些情況下,您可能需要在整個應(yī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ù)組中傳入要自動加載的模型名稱,系統(tǒng)會自動加載,此時系統(tǒng)處于初始化狀態(tài),整個應(yīng)用程序都可以訪問。

 

幫手

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

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

名稱和描述

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 提供了一些使用電子郵件的輔助功能。如需更強大的電子郵件解決方案,請參閱 codeigniter 的電子郵件類。

file helper

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

form helper

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

html helper

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

inflector helper

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

language helper

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

number helper

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

path helper

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

security helper

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

smiley helper

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

string helper

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

text helper

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

typography helper

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

url helper

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

xml helper

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

 

加載助手

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

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

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

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

 

路由

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

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

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

 

自定義路由規(guī)則

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

reserved routes & description

$route['default_controller']

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

$route['404_override']

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

$route['translate_uri_dashes']

從布爾值可以看出,這并不完全是一條路線。此選項使您能夠在控制器和方法 uri 段中用下劃線自動替換破折號 (‘-‘),從而在需要時為您節(jié)省額外的路由條目。這是必需的,因為破折號不是有效的類或方法名稱字符,如果您嘗試使用它,將導致致命錯誤。

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

 

通配符

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

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

示例

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

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

 

正則表達式

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

示例

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

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

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频