❶ thinkphp5框架擴展redis類方法示例
本文實例講述了thinkphp5框架擴展redis類方法。分享給大家供大家參考,具體如下:
筆者在開發時發現,thinkphp5的自帶redis類方法,只有簡單的讀取緩存、寫入緩存的基本方法,遠不能滿足我們業務的需求。redis本身支持五種數據類型,string(字元串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)。redis的東西就不必再介紹了,接下來還是讓我一起擴展thinkphp5的redis方法吧!
首先我們先找到緩存驅動類里的,handler()方法,這個方法是返回Redis類的實例化對象的。
這就是實例化對象,包括了options配置項、handler資源句柄、tag標簽。實際上這里的handler是new
Redis()的對象實例。只要在外部拿到handler資源句柄,則可以對redis的操作進行擴展了。
在cache類里新增一個getHandler方法。
然後我們就可以在控制器調用了
列印的就是這個redis對象了
這里需要注意的是:
一個是調thinkphp5的redis的方法,就是這樣用。
一個是如果你要調用原生的redis方法
基本的用法都講完了。
接下來就愉快的開始擴展redis方法吧。
先找到這個類
這個類里並沒有list的相關操作方法,那我們就來擴展list的相關方法。
這里的話,我就舉一個例子了。
在控制器里去調用
這樣就寫入成功了。
更多關於thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend
FrameWork框架入門教程》及《PHP模板技術總結》。
希望本文所述對大家基於ThinkPHP框架的PHP程序設計有所幫助。
您可能感興趣的文章:針對thinkPHP5框架存儲過程bug重寫的存儲過程擴展類完整實例ThinkPHP行為擴展Behavior應用實例詳解ThinkPHP應用模式擴展詳解ThinkPHP框架設計及擴展詳解ThinkPHP的Widget擴展實例老生常談ThinkPHP中的行為擴展和插件(推薦)TP5(thinkPHP5)框架mongodb擴展安裝及特殊操作示例thinkPHP下的widget擴展用法實例分析thinkPHP3.2.2框架行為擴展及demo示例ThinkPHP5.0框架驗證碼功能實現方法【基於第三方擴展包】thinkphp5框架實現的自定義擴展類操作示例
❷ thinkphp limit怎麼用
用法一、限制結果數量
例如獲取滿足要求的10個用戶,如下調用即可:
$User=M('User');
$User->where('status=1')->field('id,name')->limit(10)->select();
limit方法也可以用於寫操作,例如更新滿足要求的3條數據:
$User=M('User');
$User->where('score=100')->limit(3)->save(array('level'=>'A'));
用法二、分頁查詢
用於文章分頁查詢是limit方法比較常用的場合,例如:
$Article=M('Article');
$Article->limit('10,25')->select();
表示查詢文章數據,從第10行開始的25條數據(可能還取決於where條件和limit排序的影響 這個暫且不提)。
在3.1版本後,你也可以這樣使用:
$Article=M('Article');
$Article->limit(10,25)->select();
對於大數據表,盡量使用limit限制查詢結果,否則會導致很大的內存開銷和性能問題。
❸ thinkPHP分組後模板無法載入問題解決方法
本文分析了thinkPHP分組後模板無法載入問題解決方法。分享給大家供大家參考,具體如下:
一個分組簡要的目錄結構如下圖所示:
默認分組配置為Home。當訪問localhost/server/時可以正常訪問前台,localhost/server/home/Index/index也能正常訪問。
但是,localhost/server/admin卻不能載入tpl頁面,但是能夠訪問到控制器(localhost/server/admin/Index/index能訪問,display不出頁面)。
解決:
修改後台導入文件:
import("ORG.Util.Cookie",'./App/Lib');
由於分組後,一些公共包放在了外面,不能使用原來的:
import('@.ORG.Util.Cookie');
進行導入。
由於前台Home目錄下面要做手機頁面,進行了TPM的一些配置:
'LAYOUT_ON'
=>true,
這個參數設置之後,Tpl下面需要有一個layout.html文件,不然display顯示不出頁面,可以在Admin目錄的Tpl下增加一個layout.html文件,這樣可以顯示。修改配置參數也可以,在Admin目錄下的config.php中加入:
'LAYOUT_ON'
=>false,
這樣前台頁面仍然正常。後台也可以正常顯示。
更多關於thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《ThinkPHP常用方法總結》、《php操作office文檔技巧總結(包括word,excel,access,ppt)》、《PHP中cookie用法總結》、《smarty模板入門基礎教程》及《PHP模板技術總結》。
希望本文所述對大家基於ThinkPHP框架的PHP程序設計有所幫助。
❹ ThinkPHP中execute和query方法的區別
初學thinkphp的時候,很多人都對execute()和query()方法的區別搞不懂,本文就此淺析二者的區別。
大家都知道,thinkphp中execute()和query()方法都可以在參數里直接輸入sql語句。但是不同的是execute()通常用來執行insert或update等sql語句,而query常用來執行select等語句。
execute()方法將返回影響的記錄數,如果執行sql的select語句的話,返回的結果將是表的總記錄數:
代碼如下:
$model = m( mytable );
$result = $model ->execute( 'update mytable set name=aaa where id=11'); //將返回總行數
query()方法將返回數據集:
代碼如下:
$model = m( mytable );
$result = $model ->query( 'select * from mytable' ); //將返回array()
❺ ThinkPHP中limit()使用方法詳解
本文介紹ThinkPHP的limit()方法的用法。limit方法可以用於對資料庫操作的結果進行取指定范圍的條數。即相當於是在mysql查詢語句中的limit子句。
limit方法也是模型類的連貫操作方法之一,主要用於指定查詢和操作的數量,特別在分頁查詢的時候使用較多。ThinkPHP的l
imit方法可以兼容所有的資料庫驅動類的。
用法一、限制結果數量
例如獲取滿足要求的10個用戶,如下調用即可:
$User
=
M('User');
$User->where('status=1')->field('id,name')->limit(10)->select();
limit方法也可以用於寫操作,例如更新滿足要求的3條數據:
$User
=
M('User');
$User->where('score=100')->limit(3)->save(array('level'=>'A'));
用法二、分頁查詢
用於文章分頁查詢是limit方法比較常用的場合,例如:
$Article
=
M('Article');
$Article->limit('10,25')->select();
表示查詢文章數據,從第10行開始的25條數據(可能還取決於where條件和limit排序的影響
這個暫且不提)。
在3.1版本後,你也可以這樣使用:
$Article
=
M('Article');
$Article->limit(10,25)->select();
對於大數據表,盡量使用limit限制查詢結果,否則會導致很大的內存開銷和性能問題。
關於ThinkPHP中limit()的使用方法就給大家介紹這么多,希望對您有所幫助,同時也非常感謝大家對腳本之家網站的支持!
❻ 淺析ThinkPHP中execute和query方法的區別
我也用TP用了很久了,在大項目中讀寫分離是比不可少的,所以對使用哪個必須要嚴謹。
下面是比較容易被忽略的:
如果你當前採用了分布式資料庫,並且設置了讀寫分離的話,execute方法始終是在寫伺服器執行,因此execute方法對應的都是寫操作,而不管你的SQL語句是什麼。
下面是顯而易見的區別(摘自網路,表達的比較詳細):
ThinkPHP中execute()和query()方法都可以在參數里直接輸入SQL語句。
不同的是execute()通常用來執行insert或update等SQL語句,而query常用來執行select等語句。
execute()方法將返回影響的記錄數,如果執行SQL的select語句的話,返回的結果將是表的總記錄數:
$model = M( "MyTable" );
$result = $model ->execute( 'select *from MyTable' ); //將返回總行數
execute 返回結果總行數類似於原生php中
$sql = 'select `status` from `sys_serinfo` where `status` =1';
$query = mysql_query( $sql );
$result = mysql_num_rows( $query);
// mysql_num_rows from manual 返回結果集中行的數目。此命令僅對 SELECT 語句有效。
echo $result;
query()方法將返回數據集:
$model = M( "MyTable" );
$result = $model ->query( 'select *from MyTable' ); //將返回array()
execute()主要用於更新和寫入,有受影響行數但沒結果集的使用execute();既不需要從資料庫返回待處理的值。
query()主要用於查詢有受影響行數有結果集的,從資料庫中取得需要處理的數據。
❼ thinkphp框架有什麼功能及使用方法
ThinkPHP是一個開源的PHP框架, 是為了簡化企業級應用開發和敏捷WEB應用開發而誕生的。最早誕生於2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,並且遵循Apache2開源協議發布。早期的思想架構來源於Struts,後來經過不斷改進和完善,同時也借鑒了國外很多優秀的框架和模式,使用面向對象的開發結構和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(標簽庫)、RoR的ORM映射和ActiveRecord模式,封裝了CURD和一些常用操作,單一入口模式等,在模版引擎、緩存機制、認證機制和擴展性方面均有獨特的表現,也已經越來越多地受到國內PHP開發人員的認可。
使用ThinkPHP,你可以更方便和快捷的開發和部署應用,當然不僅僅是企業級應用,任何PHP應用開發都可以從ThinkPHP的簡單、兼容和快速的特性中受益。簡潔、快速和實用是ThinkPHP發展秉承的宗旨,為此ThinkPHP會不斷吸收和融入更好的技術以保證其新鮮和活力,提供WEB應用開發的最佳實踐!
❽ thinkphp show方法怎麼用
在了解了控制器和模型操作後,我們開始熟悉視圖部分,ThinkPHP中的視圖主要就是指模板文件和模板引擎,本篇首先了解下模板文件以及是如何進行渲染輸出的。
一、模板定義
為了對模板文件更加有效的管理,ThinkPHP對模板文件進行目錄劃分,默認的模板文件定義規則是:
模板目錄/[分組名/][模板主題/]模塊名/操作名+模板後綴
模板目錄默認是項目下面的Tpl, 當定義分組的情況下,會按照分組名分開子目錄,新版模板主題默認是空(表示不啟用模板主題功能),
模板主題功能是為了多模板切換而設計的,如果有多個模板主題的話,可以用DEFAULT_THEME參數設置默認的模板主題名。
在每個模板主題下面,是以項目的模塊名為目錄,然後是每個模塊的具體操作模板文件,例如:
User模塊的add操作 對應的模板文件就應該是:
Tpl/User/add.html
模板文件的默認後綴是.html,也可以通過TMPL_TEMPLATE_SUFFIX來配置成其他的。例如,我們可以配置:
'TMPL_TEMPLATE_SUFFIX'=>'.tpl'
定義後,User模塊的add操作 對應的模板文件就變成是:
Tpl/User/add.tpl
如果項目啟用了模塊分組功能(假設User模塊屬於Home分組),那麼默認對應的模板文件可能變成 :
Tpl/Home/User/add.html
分組模式下面,如果覺得目錄結構太深,可以通過設置TMPL_FILE_DEPR參數來配置簡化模板的目錄層次,例如設置:
'TMPL_FILE_DEPR'=>'_'
默認的模板文件就變成了:
Tpl/Home/User_add.html
正是因為系統有這樣一種模板文件自動識別的規則,所以給我們的模板渲染輸出帶來了簡化。
二、模板渲染
模板定義後就可以通過display和show方法來渲染輸出。其中display方法需要我們有定義模板文件,而show方法則是直接渲染內容輸出。
最常用的是display方法,調用格式:
第一種: display('[主題:][模塊:][操作]'[,'字元編碼'][,'輸出類型'])
第二種: display('完整的模板文件名'[,'字元編碼'][,'輸出類型'])
下面是一個最典型的用法,不帶任何參數:
$this->display();
表示系統會按照默認規則自動定位模板文件,所以通常display方法無需帶任何參數即可輸出對應的模板,這是模板輸出的最簡單的用法。
如果沒有按照模板定義規則來定義模板文件,或者我需要調用其他模塊下面的某個模板,可以使用:
$this->display('edit');
表示調用當前模塊下面的edit模板
$this->display('Member:read');
表示調用Member模塊下面的read模板。
如果我們使用了模板主題功能,那麼也可以支持跨主題調用,使用:
$this->display('theme:User:edit');
表示調用theme主題下面的User模塊的edit模板。
這種方式的渲染輸出不需要寫模板文件的路徑和後綴,確切地說,這裡面的模塊和操作並不一定需要有對應的模塊或者操作,只是一個目錄名稱和文件名稱而已,例如,你的項目裡面可能根本沒有Public模塊,更沒有Public模塊的menu操作,但是一樣可以使用
$this->display('Public:menu');
輸出這個模板文件。理解了這個,模板輸出就清晰了。
display方法支持在渲染輸出的時候指定輸出編碼和類型,例如:
$this->display('read', 'utf-8', 'text/xml');
表示輸出XML頁面類型(配合你的應用需求可以輸出很多類型)。
事情總有特例,如果模板目錄是自定義的,或者根本不需要按模塊進行分目錄存放,那麼默認的display渲染規則就不能處理,這個時候,我們就需要使用另外一種方式來應對,直接傳入模板文件名即可,例如:
$this->display('./Public/menu.html');
這種方式需要指定模板路徑和後綴,這里的Public目錄是位於當前項目入口文件位置下面。如果是其他的後綴文件,也支持直接輸出,例如:
$this->display('./Public/menu.tpl');
只要./Public/menu.tpl是一個實際存在的模板文件。
要注意模板文件位置是相對於項目的入口文件,而不是模板目錄。
還有一種情況是,你需要獲取渲染模板的輸出內容,就可以使用fetch方法,fetch方法的用法和display基本一致,區別就在於fetch方法渲染後不是直接輸出,而是返回渲染後的內容,例如:
$content = $this->fetch('Member:edit');
使用fetch方法獲取渲染內容後,你可以進行過濾和替換等操作,用於對模板輸出的復雜需求。
如果你沒有定義任何模板文件,或者把模板內容存儲到資料庫中的話,你就需要使用show方法來渲染輸出了,show方法的調用格式:
show('渲染內容'[,'字元編碼'][,'輸出類型'])
例如,
$this->show($content);
也可以指定編碼和類型:
$this->show($content, 'utf-8', 'text/xml');
show方法中的內容也可以支持模板解析。
三、模板賦值
我們知道了如何渲染模板輸出,但是如果要在模板中輸出變數,必須在在控制器中把變數傳遞給模板,提供了assign方法對模板變數賦值,無論何種變數類型都統一使用assign賦值。
$this->assign('name',$value); // 下面的寫法是等效的 $this->name = $value;
assign方法必須在display和show方法之前調用,並且系統只會輸出設定的變數,其它變數不會輸出(系統變數可以通過特殊的標簽輸出,可以無需賦值模板變數),一定程度上保證了變數的安全性。
賦值後,就可以在模板文件中輸出變數了,如果使用的是內置模板的話,就可以這樣輸出:
{$name}
如果要同時輸出多個模板變數,可以使用下面的方式:
$array['name'] = 'thinkphp';
$array['email'] = '[email protected]';
$array['phone'] = '12335678';
$this->assign($array);
這樣,就可以在模板文件中同時輸出name、email和phone三個變數。
模板變數的輸出根據不同的模板引擎有不同的方法,我們在後面會專門講解內置模板引擎的用法。如果你使用的是PHP本身作為模板引擎的話 ,就可以直接在模板文件裡面輸出了:
<?php echo $name.'['.$email.''.$phone.']';?>
如果採用內置的模板引擎,可以使用:
{$name} [ {$email} {$phone} ]
輸出同樣的內容。
關於更多的模板標簽使用,我們會在後面模板標簽中詳細講解。
四、模板替換
在進行模板輸出之前,系統還可以對渲染的模板結果進行一些模板的特殊字元串替換操作,也就是實現了模板輸出的替換和過濾。這個機制可以使得模板文件的定義更加方便,默認的替換規則有:
../Public: 會被替換成當前項目的公共模板目錄 通常是 /項目目錄/Tpl/當前主題/Public/
__TMPL__: 會替換成項目的模板目錄 通常是 /項目目錄/Tpl/當前主題/
(註:為了部署安全考慮,../Public和__TMPL__不再建議使用)
__PUBLIC__:會被替換成當前網站的公共目錄 通常是 /Public/
__ROOT__: 會替換成當前網站的地址(不含域名)
__APP__: 會替換成當前項目的URL地址 (不含域名)
__GROUP__:會替換成當前分組的URL地址 (不含域名)
__URL__: 會替換成當前模塊的URL地址(不含域名)
__ACTION__:會替換成當前操作的URL地址 (不含域名)
__SELF__: 會替換成當前的頁面URL
注意這些特殊的字元串是嚴格區別大小寫的,並且這些特殊字元串的替換規則是可以更改或者增加的,我們只需要在項目配置文件中配置TMPL_PARSE_STRING就可以完成。如果有相同的數組索引,就會更改系統的默認規則。例如:
'TMPL_PARSE_STRING' =>array(
'__PUBLIC__' => '/Common', // 更改默認的/Public 替換規則
'__JS__' => '/Public/JS/', // 增加新的JS類庫路徑替換規則
'/Uploads' => '/Uploads', // 增加新的上傳路徑替換規則
)
有了模板替換規則後,頁面上所有的__PUBLIC__ 字元串都會被替換,那如果確實需要輸出__PUBLIC__ 字元串到模板呢,我們可以通過增加替換規則的方式,例如:
'TMPL_PARSE_STRING' =>array(
'--PUBLIC--' => '__PUBLIC__', // 採用新規則輸出/Public字元串
)
這樣增加替換規則後,如果我們要輸出__PUBLIC__ 字元串,只需要在模板中添加--PUBLIC--,其他替換字元串的輸出方式類似。
五、總結
通過本篇的學習,我們大概掌握了如何定義模板文件和進行模板渲染輸出,以及如何賦值模板變數,後面我們將會學習如何在模板文件中使用標簽來簡化你的書寫。
❾ ThinkPHP5.0中Request請求對象的常用操作
$request = Request::instance();
// 獲取當前域名
echo 'domain: ' . $request->domain() . '<br/>';
// 獲取當前入口文件
echo 'file: ' . $request->baseFile() . '<br/>';
// 獲取當前URL地址 不含域名
echo 'url: ' . $request->url() . '<br/>';
// 獲取包含域名的完整URL地址
echo 'url with domain: ' . $request->url(true) . '<br/>';
// 獲取當前URL地址 不含QUERY_STRING
echo 'url without query: ' . $request->baseUrl() . '<br/>';
// 獲取URL訪問的ROOT地址
echo 'root:' . $request->root() . '<br/>';
// 獲取URL訪問的ROOT地址
echo 'root with domain: ' . $request->root(true) . '<br/>';
// 獲取URL地址中的PATH_INFO信息
echo 'pathinfo: ' . $request->pathinfo() . '<br/>';
echo 'pathinfo: ' . $request->path() . '<br/>';// 獲取URL地址中的PATH_INFO信息 不含後綴
echo 'ext: ' . $request->ext() . '<br/>';// 獲取URL地址中的後綴信息
echo "當前模塊名稱是" . $request->mole();
echo "當前控制器名稱是" . $request->controller();
echo "當前操作名稱是" . $request->action();
echo '請求方法:' . $request->method() . '<br/>';
echo '資源類型:' . $request->type() . '<br/>';
echo '訪問ip地址:' . $request->ip() . '<br/>';
echo '是否AJax請求:' . var_export($request->isAjax(), true) . '<br/>';
echo '請求參數:';
mp($request->param());
echo '請求參數:僅包含name';
mp($request->only(['name']));
echo '請求參數:排除name';
mp($request->except(['name']));
echo '路由信息:';
mp($request->route());
echo '調度信息:';
mp($request->dispatch());
❿ ThinkPHP模版中導入CSS和JS文件的方法
本文實例講述了ThinkPHP模版中導入CSS和JS文件的方法。分享給大家供大家參考。具體方法如下:
常用方法
1.
css使用link
2.
js使用src
用tp自己的導入標簽import
導入Public文件夾下面的Js目錄中的test.js文件,import標簽可以省略type屬性,默認就是js的文件
復制代碼
代碼如下:<import
type='js'
file='Js.test'>
<import
type='css'
file='Css.test'>