麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > ThinkPHP > 正文

關于thinkphp

2024-09-09 15:20:02
字體:
來源:轉載
供稿:網友

1. 緩存

修改模版時要注意及時刪除緩存,否則不能立即生效。

2.命名規范

類文件以.class.php為后綴,駝峰法命名,并且首字母大寫,例如DbMysql.class.php。

函數、配置文件等其他類庫文件之外的一般是以.php為后綴(第三方引入的不做要求)。

類名和文件名一致,例如 UserAction類的文件命名是UserAction.class.php, InfoModel類的文件名是InfoModel.class.php,

函數的命名使用小寫字母和下劃線的方式,例如 get_client_ip

Action控制器類以Action為后綴,例如 UserAction、InfoAction

模型類以Model為后綴,例如UserModel、InfoModel

方法的命名使用駝峰法,并且首字母小寫,例如 getUserName

屬性的命名使用駝峰法,并且首字母小寫,例如 tableName

以雙下劃線“__”打頭的函數或方法作為魔法方法,例如 __call 和 __autoload

常量以大寫字母和下劃線命名,例如 HAS_ONE和 MANY_TO_MANY

配置參數以大寫字母和下劃線命名,例如HTML_CACHE_ON

語言變量以大寫字母和下劃線命名,例如MY_LANG,以下劃線打頭的語言變量通常用于系統語言變量,例如 _CLASS_NOT_EXIST_。

數據表和字段采用小寫加下劃線方式命名,例如 think_user 和 user_name

特例:在ThinkPHP里面,單字母大寫函數,通常是某些操作的快捷定義,或者有特殊的作用。例如,ADSL方法等等

3.配置

ThinkPHP提供了靈活的全局配置功能,采用最有效率的PHP返回數組方式定義,支持慣例配置、項目配置、調試配置和模塊配置

慣例配置:系統內置有一個慣例配置文件(位于ThinkCommonconvention.php),按照大多數的使用對常用參數進行了默認配置。

項目配置:項目配置文件位于項目的配置文件目錄(默認是Conf)下面,文件名是config.php。

調試配置:如果啟用了調試模式的話,那么會導入框架默認的調試配置文件,默認的調試配置文件位于ThinkCommondebug.php。自定義項目配置文件位于conf/debug.php

分組配置:分組配置用于系統啟用了分組模式的情況之下,對于每個分組可以單獨定義自己的配置文件。分組配置文件位于:項目配置目錄/分組名稱/config.php

模塊配置:

ThinkPHP支持對某些參數進行動態配置,針對這一特性,ThinkPHP還特別引入了模塊配置文件的支持,這其實也是動態配置的體現。

模塊配置文件位于:

項目配置目錄/模塊名(小寫)_config.php // 用于不使用分組的情況

或者

項目配置目錄/分組名/模塊名(小寫)_config.php // 用于使用分組的情況

讀取配置:定義了配置文件之后,可以使用系統提供的C方法來讀取已有的配置:

C('參數名稱') // 獲取已經設置的參數值

動態配置:在具體的Action方法里面,我們仍然可以對某些參數進行動態配置,主要是指那些還沒有被使用的參數。

C('參數名稱','新的參數值');

擴展配置:慣例配置如下 'APP_CONFIG_LIST' => array('taglibs','routes','htmls','modules','actions','tags'),  

4.模塊和操作

4.1基礎

每個模塊是一個Action文件,類似于我們平常所說的控制器,系統會自動尋找項目類庫Action目錄下面的相關類,如果沒有找到,則會定位到空模塊,否則拋出異常。

而actionName操作是首先判斷是否存在Action類的公共方法,如果不存在則會繼續尋找父類中的方法,如果依然不存在,就會尋找是否存在自動匹配的模版文件。如果存在模版文件,那么就直接渲染模版輸出。

因此應用開發中的一個重要過程就是給不同的模塊定義具體的操作。一個應用如果不需要和數據庫交互的時候可以不需要定義模型類,但是必須定義Action控制器。

4.2 默認模塊

系統的默認模塊設置是Index模塊,默認操作設置是index操作

4.3 模塊分組

模塊分組功能是為了更好的組織已有的模塊,并且增加項目容量的一個有效機制。分組功能可以把以往的多項目合并到一個項目中去,這樣一來,之前需要采用跨項目 操作的地方,現在因為在一個項目中從而免去了不少麻煩,并且公共文件的重用也方便了,并且每個分組都可以有自己獨立的配置文件、公共文件、語言包,在 URL的訪問上面也非常清晰。

要啟用分組模塊非常簡單,配置下APP_GROUP_LIST參數和DEFAULT_GROUP參數即可。

例如我們把當前的項目分成Home和Admin兩個組,分別表示前臺和后臺功能

'APP_GROUP_LIST'=>'Admin,Home',   

'DEFAULT_GROUP'=>'Home',  

4.3 URL模式

ThinkPHP支持四種URL模式,可以通過設置URL_MODEL參數來定義,包括普通模式、PATHINFO、REWRITE和兼容模式。

URL_MODEL 為0,采用傳統的URL參數模式,http://<serverName>/appName/?m=module&a=action&id=1 

URL_MODEL 為1,默認情況使用PATHINFO模式,ThinkPHP內置強大的PATHINFO支持,提供靈活和友好URL支持。PATHINFO模式根據不同的設置還包括普通模式和智能模式兩種:

普通模式 設置URL_PATHINFO_MODEL 參數為1 ,該模式下面URL參數沒有順序,例如

http://<serverName>/appName/m/module/a/action/id/1

http://<serverName>/appName/a/action/id/1/m/module

以上URL等效

智能模式 設置URL_PATHINFO_MODEL 參數為2 (系統默認的模式),自動識別模塊和操作,例如

URL_MODEL 為2,REWRITE模式,該URL模式和PATHINFO模式功能一樣,除了可以不需要在URL里面寫入口文件,和可以定義.htaccess 文件外。在開啟了Apache的URL_REWRITE模塊后,就可以啟用REWRITE模式了,具體參考下面的URL重寫部分。

URL_MODEL 為3,兼容模式,兼容模式是普通模式和PATHINFO模式的結合,并且可以讓應用在需要的時候直接切換到PATHINFO模式而不需要更改模板和程序。兼容模式URL可以支持任何的運行環境。

4.4 URL路由

4.5 URL偽靜態

系統支持偽靜態URL設置,可以通過設置URL_HTML_SUFFIX參數隨意在URL的最后增加你想要的靜態后綴,而不會影響當前操作的正常執行。例如,我們設置URL_HTML_SUFFIX 為 .shtml 的話,我們可以把下面的URL

http:///Blog/read/id/1 

變成

http:///Blog/read/id/1.shtml 

4.6 URL重寫

通常的URL里面含有index.php,為了達到更好的SEO效果可能需要去掉URL里面的index.php ,通過URL重寫的方式可以達到這種效果,通常需要服務器開啟URL_REWRITE模塊才能支持。

下面是Apache的配置過程,可以參考下:

1、httpd.conf配置文件中加載了mod_rewrite.so模塊

2、AllowOverride None 將None改為 All

3、確保URL_MODEL設置為2

4、把.htaccess文件放到入口文件的同級目錄下

  1. RewriteEngine on 
  2. RewriteCond %{REQUEST_FILENAME} !-d 
  3. RewriteCond %{REQUEST_FILENAME} !-f 
  4. RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 

4.7 URL生成

為了配合所使用的URL模式,我們需要能夠動態的根據當前的URL設置生成對應的URL地址,為此,ThinkPHP內置提供了U方法,用于URL的動態生成,可以確保項目在移植過程中不受環境的影響。

4.8 URL大小寫

系統本身已經提供了一個很好的解決方案,可以通過配置簡單實現。只要在項目配置中,增加:

'URL_CASE_INSENSITIVE' =>   true

就可以實現URL訪問不再區分大小寫了。

4.9 空操作

空操作是指系統在找不到指定的操作方法的時候,會定位到空操作(_empty)方法來執行,利用這個機制,我們可以實現錯誤頁面和一些URL的優化。

  1. Class CityAction extends Action{     
  2.     Public function _empty(){ 
  3.          ... 
  4.    } 

4.10 空模塊

空模塊的概念是指當系統找不到指定的模塊名稱的時候,系統會嘗試定位空模塊(EmptyAction),利用這個機制我們可以用來定制錯誤頁面和進行URL的優化。

Class EmptyAction extends Action{ 

4.11 前置和后置操作

前置和后置操作

系統會檢測當前操作是否具有前置和后置操作,如果存在就會按照順序執行,例如,我們在UserAction類里面定義了_before_insert() 和 _after_insert() 操作,那么執行User模塊的insert操作的時候,會按照順序執行下面的操作:

  1. _before_insert 
  2. insert 
  3. _after_insert 

4.12操作鏈

ThinkPHP支持使用操作鏈的方式,例如,我們訪問下面的URL:http://serverName/appName/User/action1:action2:action3/

那么會依次執行UserAction的action1 action2 action3方法,并且當前操作名稱是最后一個操作。在進行默認模板輸出的時候會用到。如果確實需要在不同的操作方法中都進行輸出,請確保在 Action的display方法中指定需要渲染的模板文件名。否則,只能輸出最后的操作模板。使用了操作鏈后,前置和后置方法會失效。

4.13 跨模塊調用

在開發過程中經常會在當前模塊調用其他模塊的方法,這個時候就涉及到跨模塊調用,我們還可以了解到A和R兩個快捷方法的使用。

$User = A("User"); // 實例化UserAction控制器對象

$User->importUser(); // 調用User模塊的importUser操作方法

這里的A("User") 是一個快捷方法,和下面的代碼等效:

  1. import("@.Action.UserAction"); 
  2. $User = new UserAction(); 

事實上,在這個例子里面還有比A方法更簡單的調用方法,例如:

R("User","importUser"); // 遠程調用UserAction控制器的importUser操作方法

上面只是在當前項目中調用,如果你有需要在多個項目之間調用方法,一樣可以完成:

  1. $User = A("User","App2"); // 實例化App2項目的UserAction控制器對象 
  2. $User->importUser();  
  3.  // 遠程調用App2項目的UserAction控制器的importUser操作方法 
  4.  R("User","importUser","App2"); 

4.14 頁面跳轉

在應用開發中,經常會遇到一些帶有提示信息的跳轉頁面,例如操作成功或者操作錯誤頁面,并且自動跳轉到另外一個目標頁面,系統的Action類內置了兩個跳轉方法success和error,用于頁面跳轉提示,而且可以支持ajax提交,使用方法很簡單,舉例如下:

  1. $User = M("User"); // 實例化User對象 
  2. $result = $User->add($data); 
  3. if ($result){ 
  4. // 設置成功后的跳轉頁面地址 默認的返回頁面是$_SERVER["HTTP_REFERER"] 
  5. $this->assign("jumpUrl","/User/list/"); 
  6.  $this->success("新增成功!"); 
  7. }else
  8. // 錯誤頁面的默認跳轉頁面是返回上一頁 通常可以不用設置 
  9.  $this->error("新增錯誤!"); 

Success和error方法都有對應的模板,并且是可以設置的,默認的設置Public:success和Public:error,模板文件可以使用模板標簽,并且可以使用下面的模板變量:

$msgTitle :操作標題

$message :頁面提示信息

$status :操作狀態  1表示成功 0 表示失敗 具體還可以由項目本身定義規則

$waitSecond :跳轉等待時間 單位為妙

$jumpUrl :跳轉頁面地址

如果是AJAX方式提交的話,success和error方法會調用ajaxReturn方法返回信息,具體可以參考后面的AJAX返回部分。

4.15 重定向

Action類的redirect方法可以實現頁面的重定向功能。

redirect方法的參數用法和U函數的用法一致(參考上面的URL生成部分),例如:

$this->redirect('User/list', array('cate_id'=>2), 5,'頁面跳轉中~')

上面的用法是停留5秒后跳轉到User模塊的list操作,并且顯示頁面跳轉中字樣,重定向后會改變當前的URL地址。

4.16 AJAX返回

系統支持任何的AJAX類庫,提供了ajaxReturn方法用于AJAX調用后返回數據給客戶端。

并且支持JSON、XML和EVAL三種方式給客戶端接受數據,通過配置DEFAULT_AJAX_RETURN進行設置,在選擇不同的AJAX類庫的時候可以使用不同的方式返回數據。

要使用ThinkPHP的ajaxReturn方法返回數據的話,需要遵守一定的返回數據的格式規范。ThinkPHP返回的數據格式包括:

status 操作狀態

info 提示信息

data 返回數據

返回數據data可以支持字符串、數字和數組、對象,返回客戶端的時候根據不同的返回格式進行編碼后傳輸。如果是JSON格式,會自動編碼成JSON字符 串,如果是XML方式,會自動編碼成XML字符串,如果是EVAL方式的話,只會輸出字符串data數據,并且忽略status和info信息。

下面是一個簡單的例子:

  1. $User = M("User"); // 實例化User對象 
  2. $result = $User->add($data); 
  3. if ($result){ 
  4. // 成功后返回客戶端新增的用戶ID,并返回提示信息和操作狀態 
  5.  $this->ajaxReturn($result,"新增成功!",1); 
  6. }else
  7. // 錯誤后返回錯誤的操作狀態和提示信息 
  8.  $this->ajaxReturn(0,"新增錯誤!",0); 

注意,確保你是使用AJAX提交才使用ajaxReturn方法。

在客戶端接受數據的時候,根據使用的編碼格式進行解析即可。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 欧美性色黄大片www 操碰网 | 亚洲人成综合第一网 | 欧美三级日本三级少妇99 | 福利免费观看 | 色人阁导航 | 91美女视频在线 | 看免费的毛片 | 在线看一区二区三区 | 午夜视频你懂的 | 性大片免费看 | 中国免费一级毛片 | 国产精品高潮视频 | 欧美成人精品欧美一级乱黄 | 深夜免费福利视频 | 国产成人77亚洲精品www | 免费视频a| 国产亚洲美女精品久久久2020 | www.9191.com| 一级α片免费看刺激高潮视频 | 免费观看国产视频 | 精品无吗乱吗av国产爱色 | 久久久99精品视频 | 曰韩毛片 | av在线播放电影 | 国产精品7区 | av在线免费观看播放 | 黄色电影免费提供 | 青草av.久久免费一区 | 天天躁狠狠躁夜躁2020挡不住 | 曰韩黄色片 | 中文字幕综合在线观看 | 免费观看一区二区三区视频 | 污污的视频在线观看 | 亚洲欧美国产精品va在线观看 | 亚洲精品久久久久久下一站 | 成人在线观看一区二区 | 国产一级毛片不卡 | 日韩午夜一区二区三区 | av电影在线网 | 亚洲视频精品在线 | chengrenzaixian|