單例模式顧名思義,就是只有一個實例。作為對象的創(chuàng)建模式, 單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例,這個類我們稱之為單例類。單例模式的要點有三個:一是某個類只能有一個實例;二是它必須自行創(chuàng)建這個實例;三是它必須自行向整個系統(tǒng)提供這個實例。下面我們討論下為什么要使用PHP單例模式?多數(shù)人都是從單例模式的字面上的意思來理解它的用途, 認為這是對系統(tǒng)資源的節(jié)省, 可以避免重復(fù)實例化, 是一種"計劃生育". 而PHP每次執(zhí)行完頁面都是會從內(nèi)存中清理掉所有的資源. 因而PHP中的單例實際每次運行都是需要重新實例化的, 這樣就失去了單例重復(fù)實例化的意義了. 單單從這個方面來說, PHP的單例的確有點讓各位失望. 但是單例僅僅只有這個功能和應(yīng)用嗎? 答案是否定的,我們一起來看看。1. php的應(yīng)用主要在于數(shù)據(jù)庫應(yīng)用, 所以一個應(yīng)用中會存在大量的數(shù)據(jù)庫操作, 在使用面向?qū)ο蟮姆绞介_發(fā)時(廢話), 如果使用單例模式, 則可以避免大量的new 操作消耗的資源。2. 如果系統(tǒng)中需要有一個類來全局控制某些配置信息, 那么使用單例模式可以很方便的實現(xiàn). 這個可以參看zend Framework的FrontController部分。3. 在一次頁面請求中, 便于進行調(diào)試, 因為所有的代碼(例如數(shù)據(jù)庫操作類db)都集中在一個類中, 我們可以在類中設(shè)置鉤子, 輸出日志,從而避免到處var_dump, echo。
成都創(chuàng)新互聯(lián)公司長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為建甌企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè),建甌網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
1. 嘗試設(shè)置一個頁面模板
1)拷貝一個index.php并改名為其它名,如list.php;
2)在list.php頁面最頂部添加
?php /*
Template Name: 友鏈
*/
?
以上兩步就可以創(chuàng)建一個頁面模板了,修改并保存好這個文件后,創(chuàng)建一個新頁面或者修改已存在的頁面。在右下邊有個“頁面模板”的面板,在下拉菜單中選中“友鏈”后保存就可以了。
然后在頁面中添加任何內(nèi)容,包括html代碼就可以顯示了??墒俏业男枨笫且约和瓿蒔HP代碼獲取數(shù)據(jù)并展示,它不能這么做。
2. 調(diào)用 WordPress 的 API實現(xiàn)URL正確跳轉(zhuǎn)
這種方法的自由度較高,并且可以創(chuàng)建非WordPress格式的URL。比如我們要把 轉(zhuǎn)交給主題文件夾下的 /custom/list.php 來處理,就可以用這種方式來處理。這種方法用到 template redirect 鉤子,template redirect 是 WordPress 在預(yù)處理好所有參數(shù)設(shè)置之后決定調(diào)用主題模板的時候調(diào)用的。
在functions.php模板函數(shù)文件中添加以下實例代碼:
function loadCustomTemplate($template) {
global $wp_query;
if(!file_exists($template))return;
$wp_query-is_page = true;
$wp_query-is_single = false;
$wp_query-is_home = false;
$wp_query-comments = false;
// if we have a 404 status
if ($wp_query-is_404) {
// set status of 404 to false
unset($wp_query-query["error"]);
$wp_query-query_vars["error"]="";
$wp_query-is_404=false;
}
// change the header to 200 OK
header("HTTP/1.1 200 OK");
//load our template
include($template);
exit;
}
function templateRedirect() {
$basename = basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);
loadCustomTemplate(TEMPLATEPATH.'/custom/'."/$basename.php");
}
add_action('template_redirect', 'templateRedirect');
這樣就實現(xiàn)了 WordPress 查找 /custom 文件夾下的 php 文件,并且將相匹配的 URL 請求轉(zhuǎn)交給對應(yīng)的 php 文件來處理的效果,與此同時,這個 php 文件還保持了對 WordPress API 的調(diào)用,因此留給我們的空間非常大。
接下來就可以在 /custom 文件夾下自定義一個list.php文件然后通過鏈接訪問。
3. 添加頁面內(nèi)容,獲取自定義數(shù)據(jù)庫/表中的內(nèi)容
然后就可以根據(jù)需要自己需要來實現(xiàn)自己想要的功能,這里需要有以下幾點要處理:
1)如何操作數(shù)據(jù)庫
WordPress提供了一個全局變量$wpdb,并將其實例化為wpdb類的對象。這樣我們就可以直接使用$wpdb來調(diào)用所有的數(shù)據(jù)庫操作函數(shù)。通過這個$wpdb對象,我們可以對WordPress數(shù)據(jù)庫進行任何操作,包括建表、查詢、刪除、更新等。使用$wpdb-get_results實現(xiàn)執(zhí)行sql語句操作數(shù)據(jù)庫,并獲取結(jié)果。
global $wpdb;
$sql= "SELECT * FROM ".$wpdb-prefix.table;
$a = $wpdb-get_results($sql);
2)使用wordpress的樣式
通過F12查看首頁代碼就可以發(fā)現(xiàn)只要使用對應(yīng)的class樣式就能輕松讓頁面統(tǒng)一規(guī)整。那么就把對應(yīng)的html添加到自定義PHP頁面中即可。
3)利用wordpress的規(guī)則輕松實現(xiàn)翻頁
wordpress已經(jīng)默認支持翻頁,格式如:,只要在自定義的頁面里面定義好每頁返回正確的內(nèi)容就好啦。
4. 設(shè)置nginx rewrite規(guī)則
可讀性強的URL一定不能是這樣的格式,對爬蟲也不友好,那就需要配置好rewrite規(guī)則,我使用的是nginx的配置為:
rewrite ^(.*)/indexed/page/([0-9]+)$ $1/indexed?page=$2 last;
到現(xiàn)在為止,離成功只有一步之遙了,那就是新建一個頁面, 大功告成!
$sql ="select * from db.pre order by num desc limit 0,10"
看了下 應(yīng)該是這個意思
獲取num字段中的值按從大到下 或是從小到大排列
是靠這句order by num desc 如果順序是反的 把desc 改成 asc
而想10條10條的去拿 就相當于翻頁一樣
limit 0,10 這個地方 如果是簡單的只拿10個 那么就是 limit 10
而你是要拿N個10條 就只有 limit 0,10
而0是什么呢
sql數(shù)據(jù)起始標記是從0開始的
所以0是表里數(shù)據(jù)序列的起始位
limit 10,10這個就是從數(shù)據(jù)的第11行取10個
本文實例講述了php使用mysqli和pdo擴展,測試對比mysql數(shù)據(jù)庫的執(zhí)行效率。分享給大家供大家參考,具體如下:
?php
/**
*
測試pdo和mysqli的執(zhí)行效率
*/
header("Content-type:text/html;charset=utf-8");
//通過pdo鏈接數(shù)據(jù)庫
$pdo_startTime
=
microtime(true);
$pdo
=
new
PDO("mysql:host=localhost;dbname=test","root","1234",array(PDO::MYSQL_ATTR_INIT_COMMAND
=
"SET
NAMES'utf8';"));
for($i=1;$i=100;$i++){
$title
=
"pdo標題".$i;
$content
=
"pdo內(nèi)容".$i;
$addtime
=
time();
$user_id
=
$i;
$pdo_sql
=
"INSERT
INTO
`article`(`title`,`content`,`addtime`,`user_id`)
VALUES(:title,:content,:addtime,:user_id)";
$sth
=
$pdo-prepare($pdo_sql);
$sth-bindParam(':title',$title);
$sth-bindParam(':content',$content);
$sth-bindParam(':addtime',$addtime);
$sth-bindParam(':user_id',$user_id);
$sth-execute();
}
$pdo_endTime
=
microtime(true);
$pdo_time
=
$pdo_endTime
-
$pdo_startTime;
echo
$pdo_time;
echo
"hr/";
//通過mysql鏈接數(shù)據(jù)庫
$mysqli_startTime
=
microtime(true);
$mysqli
=
mysqli_connect("localhost","root","1234","test")
or
die("數(shù)據(jù)連接失敗");
mysqli_query($mysqli,"set
names
utf8");
for($i=1;$i=100;$i++){
$title
=
"mysqli標題".$i;
$content
=
"mysqli內(nèi)容".$i;
$addtime
=
time();
$user_id
=
$i;
$sql
=
"INSERT
INTO
`article`(`title`,`content`,`addtime`,`user_id`)
VALUES('".$title."','".$content."',".$addtime.",".$user_id.")";
mysqli_query($mysqli,$sql);
}
$mysqli_endTime
=
microtime(true);
$mysqli_time
=
$mysqli_endTime
-
$mysqli_startTime;
echo
$mysqli_time;
echo
"hr/";
if($pdo_time
$mysqli_time){
echo
"pdo的執(zhí)行時間是mysqli的".round($pdo_time/$mysqli_time)."倍";
}else{
echo
"mysqli的執(zhí)行時間是pdo的".round($mysqli_time/$pdo_time)."倍";
}
測試結(jié)果:其實經(jīng)過多次測試,pdo和mysqli的執(zhí)行效率差不多。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP基于pdo操作數(shù)據(jù)庫技巧總結(jié)》、《php+mysqli數(shù)據(jù)庫程序設(shè)計技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。
您可能感興趣的文章:php使用mysqli和pdo擴展,測試對比連接mysql數(shù)據(jù)庫的效率完整示例php中數(shù)據(jù)庫連接方式pdo和mysqli對比分析php中關(guān)于mysqli和mysql區(qū)別的一些知識點分析php操作mysqli(示例代碼)php封裝的mysqli類完整實例PHP以mysqli方式連接類完整代碼實例php簡單解析mysqli查詢結(jié)果的方法(2種方法)php中mysql連接方式PDO使用詳解Php中用PDO查詢Mysql來避免SQL注入風(fēng)險的方法php
mysql
PDO
查詢操作的實例詳解PHP實現(xiàn)PDO的mysql數(shù)據(jù)庫操作類
-表示一個對象的成員(成員屬性 或 成員方法),符號前面說明是什么對象?符號后面說明是該對象的那一個成員?php中-符號沿用了c++中對象調(diào)用成員的方式,這里的$this其實是一個指針,指向了當前類的一個實例,所以也可以用-這里的db就是當前類的一個屬性也可以說是$this的一個屬性。這個db屬性又是一個對象所以又可以用-調(diào)用getAll方法.
另外還有一個操作符 :: 你應(yīng)該見過 - 符號是對象的成員,那 :: 就是類的成員此符號名稱為域操作符。但要注意的是不是所有類成員都可以調(diào)用的,它要求調(diào)用的成員必須是公有且靜態(tài)的。。
本句的功能描述:
獲得當前對象$this的db(db是一個數(shù)據(jù)庫操作類的實例)通過調(diào)用這個操作類的getALL方法來執(zhí)行$sql傳來的sql語句
分享名稱:php數(shù)據(jù)庫對象實例操作 php數(shù)據(jù)庫寫入實例
當前URL:http://jinyejixie.com/article8/dosccip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、全網(wǎng)營銷推廣、域名注冊、標簽優(yōu)化、定制網(wǎng)站、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)