Time of Update: 2016-06-07
模板繼承是ThinkPHP3.1.2版本添加的一項更加靈活的模板布局方式,模板繼承不同於模板布局,甚至來說,應該在模板布局的上層。模板繼承其實並不難理解,就好比類的繼承一樣,模板也可以定義一個基礎模板(或者是布局),並且其中定義相關的區塊(block),然後繼承(extend)該基礎模板的子模板中就可以對基礎模板中定義的區塊進行重載。因此,模板繼承的優勢其實是設計基礎模板中的區塊(block)和子模板中替換這些區塊。每個區塊由標籤組成,並且不支援block標籤的嵌套。下面就是基礎模板中的一個典型
Time of Update: 2016-06-07
M方法用於執行個體化一個基本模型類,和D方法的區別在於:1、不需要自訂模型類,減少IO載入,效能較好;2、執行個體化後只能調用基本模型類(預設是Model類)中的方法;3、可以在執行個體化的時候指定表首碼、資料庫和資料庫的串連資訊;D方法的強大則體現在你封裝的自訂模型類有多強,不過隨著新版ThinkPHP架構的基本模型類的功能越來越強大,M方法也比D方法越來越實用了。M方法的調用格式:M('[基本模型名:]模型名','資料表首碼','資料庫連接資訊')我們來看下M方法具體有哪些用法:1、執行個體
Time of Update: 2016-06-07
ThinkPHP CURD方法的order方法屬於模型的連貫操作方法之一,該方法用於對操作的結果排序。具體用法如下:$Model->where('status=1')->order('id desc')->limit(5)->select();注意:連貫操作方法沒有順序,可以在select方法調用之前隨便改變調用順序。支援對多個欄位的排序,例如:$Model->where('status=1')->order('id
Time of Update: 2016-06-07
Snoopy是一個php類,用來類比瀏覽器的功能,可以擷取網頁內容,發送表單,可以用來開發一些採集程式和小偷程式,本文章詳細介紹snoopy的使用教程。Snoopy的一些特點:抓取網頁的內容 fetch抓取網頁的常值內容 (去除HTML標籤) fetchtext抓取網頁的連結,表單 fetchlinks fetchform支援代理主機支援基本的使用者名稱/密碼驗證支援設定 user_agent, referer(來路), cookies 和 header
Time of Update: 2016-06-07
ThinkPHP CURD方法的field方法屬於模型的連貫操作方法之一,主要目的是標識要返回或者操作的欄位,可以用於查詢和寫入操作。1、用於查詢在查詢操作中field方法是使用最頻繁的。$Model->field('id,title,content')->select();這裡使用field方法指定了查詢的結果集中包含id,title,content三個欄位的值。執行的SQL相當於:SELECT id,title,content FROM
Time of Update: 2016-06-07
代碼執行個體: weblogUpdates.extendedPing 愚人渡 http://www.php.net http://www.php.net/read.php?tid-96.html http://www.php.net ";$res = postUrl('http://ping.baidu.com/ping/RPC2', $baiduXML);if ( strpos($res, "0") ){ echo "PING成功";}else{
Time of Update: 2016-06-07
在PHP程式中,很多時候都會遇到處理時間的問題,比如:判斷使用者線上了多長時間,共登入了多少天,兩個文章發布的時間差或者是不同操作之間的日誌記錄等等。在文章中,簡單地舉例介紹了PHP中如何計算兩個日期相差 年、月、日。 strtotime($date2)) { $ymd = $date2; $date2 = $date1; $date1 = $ymd; } list($y1, $m1, $d1) = explode('-', $date1); list($y2
Time of Update: 2016-06-07
我們知道資料庫處理sql是一條條處理的,假設購買商品的流程是這樣的:sql1:查詢商品庫存if(庫存數量 > 0){ //產生訂單...
Time of Update: 2016-06-07
在當今眾多的MVC架構中,ThinkPHP是一個快速、簡單的基於MVC和物件導向的輕量級PHP開發架構,其遵循Apache2開源協議發布,自從誕生以來一直秉承簡潔實用的設計原則,在保持出色的效能和至簡的代碼的同時,尤其注重開發體驗及易用性,並且擁有眾多的原創功能和特性,為WEB應用開發提供了強有力的支援。是眾多PHP開發人員的首選。本文就ThinkPHP3.1基礎知識做一簡述。1.目錄結構ThinkPHP最新版本可以在官方網站(http://thinkphp.cn/down/framework.
Time of Update: 2016-06-07
這個方法的作用是:php截取含有html標籤的字串,如果標籤未閉合就閉合標籤,防止未閉合的標籤破壞原網頁布局。截取完之後將多餘的內容替換為...或者其他任一字元,支援錨點指定替換到指定位置。/** ============================== 截取含有 html標籤的字串 =========================* @param (string) $str 待截取字串* @param (int) $lenth 截取長度* @param (string)
Time of Update: 2016-06-07
PHP 跳轉,即重新導向瀏覽器到指定的 URL,是一個很常見的功能。這種功能也有一些細節性的要求,比如等待多少秒以後跳轉,用不用JavaScript實現跳轉,等等。下面的跳轉方法考慮到很多,並參數化,可以用到具體的項目當中。 0) { echo EOT; exit; } else { header("Location: {$url}");
Time of Update: 2016-06-07
使用mkdir建立檔案夾時,發現這個函數有兩個參數,第二個參數是為新建立的檔案夾指定許可權。但是如果直接用mkdir('檔案地址', 0777);時 發現新檔案夾的許可權並不是777,一般情況下會是022。因為mkdir在給檔案夾制定許可權時,會跟當前登入作業系統使用者的umask(使用者預設許可權屬 性)值進行位“與”,得到的值才是最終許可權值。umask
Time of Update: 2016-06-07
ThinkPHP3.1版的Action參數綁定功能提供了URL變數和操作方法的參數綁定支援,這一功能可以使得你的操作方法定義和參數擷取更加清晰,也便於跨模組叫用作業方法。這一新特性對以往的操作方法使用沒有任何影響,你也可以用新的方式來改造以往的操作方法定義。Action參數綁定的原理是把URL中的參數(不包括分組、模組和操作地址)和控制器的操作方法中的參數進行綁定。例如,我們給Blog模組定義了兩個操作方法read和archive方法,由於read操作需要指定一個id參數,archive方法需要
Time of Update: 2016-06-07
1.模型(Model)層:預設的模型層由Model類構成,但是隨著項目的增大和業務體系的複雜化,單一的模型層很難解決要求,從3.1開始推出了多層Model的支援,設計思路很簡單,不同的模型層仍然都繼承自系統的Model類,但是在目錄結構和命名規範上做了區分,例如在某個項目設計中需要區分資料層、邏輯層、服務層等不同的模型層,我們可以在項目的Lib目錄下面建立Model、Logic和Service目錄,把對使用者表的所有模型操作分成三層:資料層:Model/UserModel
Time of Update: 2016-06-07
以往版本的ThinkPHP中頁面輸出的過程是讀模數板檔案,然後進行模板解析(也支援調用第三方模板引擎解析),但是有一些情況,我們並沒有定義模板檔案,或者把模板檔案儲存在資料庫裡面,那麼這種情況下進行頁面輸出的時候,我們是無法進行模板檔案讀取的,ThinkPHP3.1版本則針對這樣的情況增加了內容解析輸出的功能。內建的模板引擎也進行了完善,如果傳入的模板檔案不存在的話,則會認為是傳入的模板解析內容,因此,ThinkPHP3.1版的View類和Action類也做了一些相應的改進。display方法用
Time of Update: 2016-06-07
ThinkPHP3.1版本對分組的支援如了如下改進:每個分組支援獨立的空模組ThinkPHP3.0及以前版本的分組不支援定義獨立的空模組,空模組EmptyAction只能放置在分組目錄外層,而ThinkPHP3.1版則改進了每個分組可以定義獨立的空模組,對於有不同分組不同空模組需求的情況就方便了。公用Action和Model類優先載入分組目錄ThinkPHP3.0版本分組如果要繼承一個公用的Action類或者Model類分組目錄下面的,這個繼承的公用類只能放到分組目錄外層,否則就要手動用impo
Time of Update: 2016-06-07
ThinkPHP的Widget擴充用於根據頁面需要輸出不同內容,它在項目目錄中的Lib/Widget下定義。具體定義如下:class NewsListWidget extends Widget{ public function render($data){ // code...
Time of Update: 2016-06-07
以往在ThinkPHP3.1版本之前,如果需要設定自動驗證或者自動完成,一般來說必須定義在模型中,或者通過setProperty方法動態設定屬性來完成,這樣做的缺點是不太方便動態改變和調整。ThinkPHP3.1版本在模型類中增加auto和validate兩個連貫操作,用於動態設定自動完成和自動驗證規則,現在可以在Action中使用:$validate = array( array('verify','require','驗證碼必須!'),
Time of Update: 2016-06-07
ThinkPHP3.1版增加了表單提交的欄位合法性檢測,可以更好的保護資料的安全性。這一特性是3.1安全特性中的一個重要部分。表單欄位合法性檢測需要使用create方法建立資料對象的時候才會生效,具體有兩種方式:一、屬性定義可以給模型配置insertFields 和 updateFields屬性用於新增和編輯表單設定,使用create方法建立資料對象的時候,不在定義範圍內的屬性將直接丟棄,避免表單提交非法資料。insertFields 和
Time of Update: 2016-06-07
D方法應該是用的比較多的方法了,用於執行個體化自訂模型類,是ThinkPHP架構對Model類執行個體化的一種封裝,並實現了單例模式,支援跨項目和分組調用,調用格式如下:D('[項目://][分組/]模型','模型層名稱')方法的傳回值是執行個體化的模型對象。D方法可以自動檢測模型類,如果存在自訂的模型類,則執行個體化自訂模型類,如果不存在,則會執行個體化Model基類,同時對於已執行個體化過的模型,不會重複去執行個體化。D方法最常用的用法就是執行個體化當前項目的某個自訂模型,例如://