亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 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. // 錯誤頁面的默認跳轉頁面是返回上一頁 通??梢圆挥迷O置 
  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方法。

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

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人aa精品一区在线播放| 黄色一区二区在线观看| 91精品国产色综合久久不卡98| 亚洲无线码在线一区观看| 在线日韩精品视频| 久久影院免费观看| 亚洲欧美日韩天堂一区二区| 91中文字幕在线观看| 欧美色欧美亚洲高清在线视频| 日本久久久久久久久久久| 精品久久久久久久久国产字幕| 亚洲综合最新在线| 色综合视频一区中文字幕| 欧美限制级电影在线观看| 在线精品视频视频中文字幕| 亚洲无亚洲人成网站77777| 久久久久一本一区二区青青蜜月| 亚洲成色777777女色窝| 亚洲精品一区二三区不卡| 欧美大尺度激情区在线播放| 1769国产精品| 久久久久久久久国产| 国外色69视频在线观看| 成人在线视频网| 欧美交受高潮1| 国产91热爆ts人妖在线| 欧美第一页在线| 57pao成人国产永久免费| 久久韩国免费视频| 成人在线小视频| 国产成人一区二区三区小说| 亚洲美女在线视频| 日韩视频在线免费| 亚洲一区二区三区在线免费观看| 欧美性猛交丰臀xxxxx网站| 亚洲乱码国产乱码精品精天堂| 国产极品jizzhd欧美| 欧美大片免费看| 欧美电影在线观看完整版| 最近2019中文免费高清视频观看www99| 亚洲视频日韩精品| 国产成人精品久久二区二区91| 亚洲天堂男人天堂| 55夜色66夜色国产精品视频| 欧美视频一区二区三区…| 操人视频在线观看欧美| 欧美一区二区色| 成人深夜直播免费观看| 91精品国产一区| 欧美成人免费在线视频| 国产精品久久综合av爱欲tv| 国产精品揄拍500视频| 欧美性色xo影院| 国产这里只有精品| 欧美性受xxxx白人性爽| 亚洲福利视频二区| 久久久午夜视频| 国产精品一区电影| 97国产在线观看| 欧美韩国理论所午夜片917电影| 久久久久亚洲精品| 668精品在线视频| 国产成人精品久久二区二区| 欧美极品少妇与黑人| 久久精品成人一区二区三区| 欧美激情一级二级| 国产成人精品久久二区二区| 国产精品免费视频久久久| 国产精品免费福利| 久久精品中文字幕一区| 91精品国产乱码久久久久久久久| 日韩欧美第一页| 国产亚洲一区精品| 国产成人综合av| 高清欧美性猛交xxxx黑人猛交| 国产精品老女人精品视频| 中文字幕久久久av一区| 中文字幕日韩欧美在线| 大量国产精品视频| 亚洲欧美中文另类| 欧美成人免费视频| 中文字幕精品一区久久久久| 精品久久久久久久久国产字幕| 亚洲欧美激情视频| 91av在线国产| 亚洲欧美激情另类校园| 一区二区三区美女xx视频| 国产精品狼人色视频一区| 亚洲a∨日韩av高清在线观看| 国产日韩亚洲欧美| 欧美性xxxxxxx| 欧美成人在线免费视频| 高清欧美性猛交| 中文字幕自拍vr一区二区三区| 欧美一级片在线播放| 国产免费一区二区三区在线观看| 亚洲va欧美va国产综合剧情| 亚洲欧美激情另类校园| 日韩欧美a级成人黄色| 精品久久久久久久久国产字幕| 国产精品网站大全| 狠狠色香婷婷久久亚洲精品| 亚洲欧美日韩天堂一区二区| 国产精品久久久久999| 91精品国产成人| 7m精品福利视频导航| 亚洲人成电影网站色xx| 亚洲视频在线观看免费| 狠狠躁夜夜躁久久躁别揉| 91精品久久久久久久久久久久久| 秋霞av国产精品一区| 日韩免费av一区二区| 中文字幕国产精品| 69久久夜色精品国产69| 日韩在线视频国产| 亚洲精品mp4| 国产91久久婷婷一区二区| 欧美中文在线视频| 日韩免费在线观看视频| 欧美性黄网官网| 欧美电影电视剧在线观看| 欧美国产日韩xxxxx| 亚洲精品色婷婷福利天堂| 亚洲欧美日韩久久久久久| 日韩av在线电影网| 国产精品va在线| 韩国19禁主播vip福利视频| 亚洲自拍偷拍网址| 日韩视频在线免费观看| 成人网在线免费看| 欧美激情视频网址| 中文字幕亚洲无线码在线一区| 亲爱的老师9免费观看全集电视剧| 久久亚洲春色中文字幕| 亚洲一区二区少妇| 91精品国产91| 97视频在线免费观看| 在线成人中文字幕| 日韩精品久久久久久福利| 国产精品草莓在线免费观看| 成人激情综合网| 永久免费精品影视网站| 久久中国妇女中文字幕| 久久精品中文字幕| 亚洲精品大尺度| 欧美激情视频一区| 国产精品爽爽ⅴa在线观看| 欧美激情啊啊啊| 欧美成人精品在线播放| 91夜夜未满十八勿入爽爽影院| 国产在线视频91| 日韩欧美中文字幕在线观看| 亚洲精品自拍视频| 欧美在线视频免费播放| 国产精品一区二区久久久久| 亚洲无限乱码一二三四麻| 欧美午夜影院在线视频| 亚洲国产欧美精品| 国产精品夫妻激情| 98精品国产自产在线观看| 欧美色xxxx| 91久久久久久国产精品| 久久久天堂国产精品女人| 欧美久久久精品|