php時鍾
❶ php什麼是PEAR
借著引入PEAR,php的程式開發者除了可以大幅縮減撰寫程式碼的工作與時間外,還可以用很簡單的方式得到許多強大的動態網頁功能,我將會列舉許多的實例,讓大家看了後,一定會啪掌叫好,並深深的迷上了PEAR。此外,程式碼很容易維護,安全性高也是PEAR另2個很吸引人的優點,PAER程式庫宛如模組,可以輕易的抽換與更新,完全不會影響到其他的程式碼。
我們是從最基本的觀念介紹起,包括PEAR這個專有名詞的含意? 在那地方取得PEAR套件(package)? 如何使用PEAR套件等?
從第2章起,我們首先介紹PEAR的起源、歷史與特色,讓大家對PEAR有個基本的認識。
第3章我們將會介紹PEAR程式庫套件的安裝與管理方法,這一章是非常重要的,在使用PEAR之前,必需先把這些基本功夫學好,雖然有點復雜,但是學會之後受用無窮,讓您的PHP程式開發效率倍增,功能隨著遞升。
第4章,是由簡單的範例介紹如何引用PEAR程式庫來開發PHP程序,讓我們了解PEAR的一般使用方法,也為程式庫的使用建立一個基本的操作流程。
在第五章我們將介紹幾個用法簡單又功能強大的程式庫套件的範例,讓大家可以在動態網頁上快速建立一些您以前無法想像而又非常酷的功能,讓您的程式開發功力立刻提高。例如:
◆ 讓網頁可以提供天氣預報的功能,增加網頁的附加價值。
◆ 用很簡單的方法在伺服器上建立網頁的快取(Cache),加快網頁的開啟速度。
◆ 在動態網頁上搜尋某台主機有提供那些PORT號的服務。
◆ 在動態網頁上查詢某個網域名稱(DNS),找出相對應的IP。
◆ 動態產生HTML表格。
◆ 快速建立「客戶回函」系統,讓網頁瀏覽者可以從網頁上寄信給網站管理員。
◆ 讓網頁可以記錄網頁瀏覽者的行為,也就是做Log。
第6章到第13章,我們會很詳細地介紹一些很重要,很常用,但較為復雜的程式庫套件的使用方法,這幾章都是以套件為介紹的主軸,也就是說,一章只介紹一個套件,務求將這幾個重要套件中較為重要功能,詳細地介紹給大家。
這些套件(packages)包括:資料庫連線套件、表單製作套件、身份認證套件、檔案上傳套件、分頁套件等等。
最後,附錄A會對PEAR的網站做詳細的介紹,當您進入PEAR的世界後,您一定會經常來這個網站尋找資料。知道如何利用網站,對於那些PEAR的PHP開發者而言,是十分重要的。附錄B則會對PHP的物件導向程式設計做簡單的介紹。
喜歡和適合使用PEAR者分類如下:
◆ php愛好者,那一定要用PEAR,因為它絕對棒極了。
◆ PHP的專業程式設計員。您需要的是程式碼的安全性,可重復性,以及良好的工作效率,PEAR絕對是必備的。
◆ PHP的程式玩家,想要開發更有趣的,功能更強的應用程式,卻不想被撰寫PHP程式的一些煩惱綁纏,PEAR絕對可以滿足您的要求。
◆ 自己撰寫PHP程式,卻不喜歡每次都要從零開始,一字一字地敲打程式碼,PEAR可以提高您的工作效率。
◆ 您想要學習功能性強,安全性高的PHP,當學會了PHP的基本語法後,可以試著使用PEAR。
◆ 您需要量身定造的PHP應用程式,換言之,您不喜歡像XOOPS之類的套裝應用程式,來試試PEAR吧。
◆ 您需要容易維護的PHP應用程式,不想日後常修改程式碼,或因為PHP的改版而將整個程式重新設計。
◆ 您希望您的PHP程式可以物件導向化,方便程式的抽換與模組化。
◆ 您希望您的PHP功力更上一層樓,想要學習更多的PHP相關知識,透過PEAR的使用或觀看PEAR的原始碼,不失為一個好的學習途徑。
PEAR就是專門為有以上這些需求的人所寫的.。
使用PEAR就像建一座房子一樣。它是讓您用預製件的方式,建一棟自己設計兼施工的大房子,但卻不需要自己攪拌水泥,自己准備沙土、石頭,自己燒磁磚.自己做鋁門窗,自己做木工裝飾等等...。
PEAR就像是已經針對您的需求所訂制好並准備好的預製件,您只需要運用創意將他們組合起來就可以了。
我門在使用PEAR來編寫PHP程式時,必需有一個先決條件,就是必需對PHP的相關知識有一定的認識。
若您不知道甚麼是PHP,什麼是Apache、Mysql,或者您雖然知道,卻還不會PHP的基本語法,那麼,本文章目前並不適合您。建議您快去買些PHP、Apach、Mysql的入門書籍,詳加研讀後,才來看本文章。
大家並不一定要是PHP高手,但一定需要具備看懂基本PHP程序碼的能力。無論如何,首先對PHP的熱愛才是閱讀本書最基本的先決條件。
第二章
PHP有許多的規范與語法,我們不做介紹,請大家有空去閱讀有關PHP的書籍,我們重點介紹的是PHP發展到4.0版以後。加入了物件導向(Object-Oriented Programming Language)的功能,雖然還無法像了Java一樣做到完全的物件導向,但比起前版本PHP3.0已經是一大進步,也對PHP的程序開發者提供了更強大與更方便的開發能力。
PHP 5.0版以上的版本,已經轉變成為徹底的物件導向化,提供了更多完全物件導向功能。我們所介紹的PEAR程式庫對PHP 4.3.0以上的版本是完全的支援。這一點請大家放心。
為了大多數人著想,也考慮到PHP向下的相容性,本書的內容與範例都可以在PHP 4.3.0版以上的環境中執行,因為PEAR完全支援PHP 4.3.0以上的版本,小於PHP 4.3.0版的環境,PEAR大部分也是支援的,只有小部分不支援。
什麼是PHP的物件導向? 物件導向的語法在傳統的PHP程式中較少看到,但若您了解JAVA這種程式語言的話,您應該可以知道什麼足物件導向,我會在附錄B有針對物件導向做簡單的說明。
另外,我要強調的是:PHP除了基本語法外,內建的函式就有超過上千個,橫跨上百種類別,包括文字類函式、數字類函式、資料庫類、圖形類等等,功能相當強大,令人吒舌。但相對於程式開發者,如何善用這些函式,配合PHP的語法撰寫有效又好管理的程式碼,將會是一大挑戰。
在今天,有PEAR這個由全世界眾多頂尖的PHP高手所共同生產的智慧結晶,可以讓我們輕松又有效率地撰寫程式碼,並克服許多撰寫上的困難。以武俠界的例子來說,用PEAR撰寫PHP就宛如數百位武林高手灌注他們的功力給程式開發者。讓程式開發者不用從最基本的練功,扎馬步練起,借用他們的功力就可以很輕松的讓功力倍增,效率倍增。
說了半天,到底什麼是PEAR?下一個單元筆者就來做個介紹。
PEAR這個字單純就字面上而言意思是「梨子」。
一顆梨子。網站的網址為http://pear.php.net
PEAR網站的logo中可以看到例子。
PEAR的開始是從1999年11月2l日。有一位名叫Stig S.Bakken的先生,這位仁兄發起了一個專案,並號召許多的PHP高手來共同投入,他首先為這個專案建立了一些程式碼的基礎規則,希望PHP的開發者加入這個專案時所撰寫的PHP程式碼都需要遵守這些規則。
這個專案名稱就是PEAR,其實是PHP Extension and Application Repository的縮寫,意即「PHP的延續與應用程式庫」,簡單的說,PEAR其實是一個PHP的程式庫。
Bakken先生建立的程式碼基礎如下,我只概略說明一下,並不詳談細節的部分:
◆ 如果開發者要提供PHP程式庫,程式的結構必須物件化。
◆ 程式的縮排要遵循一定的格式
◆ 程式中類別的命名也要遵循一定的格式
◆ 程式碼的註解要有一定的格式
◆ 檔案命名要有一定的格式
◆ 程式庫撰寫完成後要包裝成套件,而套件的包裝與安裝方式,也有一定的格式。
該專案歡迎所有的PHP開發者來共同開發PHP程式庫,只要他們願意遵守上述的程式碼基礎規則。Bakken先生並組織了一組團隊作為這個專案的控制主體,負責審核所有參與專案的開發者所提供的程式庫,若通過審核,就將程式庫分類並放入網站中供其他開發者下載使用,另外,這個團體也負責維護網站的維護與更新。
有些人可能會很好奇,為什麼有人會願意免費撰寫程式庫讓別人來使用呀? 這就是開放原碼世界的精神一互助、共享。試想,若每個開發者針對自己專精的部分開發程式庫給其他人使用,同時也享用別的開發者所釋出的程式庫,是不是可以達到互助的目的,讓每一個開發者共享所有的開發者的成果.不必所有的程式碼都要自己撰寫。
更棒的是,這些程式庫是免費開放給全世界的人使用的,不只參與程式庫開發的開發者可以享用(這種作法與Java或perl提供函式庫的作法是一樣的)。
因此,全世界所有的PHP開發者可以省去許多撰寫程式碼的時間,又因為使用程式庫的開發者可以回報程式庫的缺失給原開發者,原開發者也因此會不斷的修正這些程式庫,所以程式碼相對安全。另外,程式庫開發者也會隨著時代演進,加入新的功能到程式庫中,讓程式庫的使用者可以與時俱進。
詳細情況可參閱PEAR的網站中所提到關於開發PEAR的目的說明:http://pear.php.net/manual/en/about-pear.php。我建議您有時間慢慢地看吧,繼續將本文章看下去,您就會慢慢了解PEAR的神奇之處了。
我在文章的最後有一章附錄:PEAR網站的介紹,大家可以先參考一下。
如果您還不太了解我介紹所謂「程式庫」的意思,沒關系,下一節就會透過實際的例子加以說明。
2-3 所有套件簡介
▓ 程式庫VS套件
介紹所有套件之前,我們必須釐清兩個名詞,以免讀者混淆了,一個就是「程式庫」,另外一個就是「套件」。
假如我是是一個PHP的開發者,發展了一個可以處理所有資料庫存取「程式庫」,並想將這個程式庫加入PEAR分享給全世界使用。當我撰寫完理資料庫的程式庫後,我必須按照PEAR的規定,將程式庫壓縮成一個「件」檔,放在PEAR網站供所有人下載,也由於遵循PEAR的規定來壓縮檔案,這個套件就可以用PEAR的套件管理指令來安裝或管理,這對PEAR使用者而言是相當便利的,關於套件管理指令,我會在下一章做完整的說明經過上述的說明,相信讀者應該了解何謂「程式庫」、何謂「套件」?其實,簡單的說,把程式庫包裝好就變成了套件。
▓ 套件與分類
PEAR截至目前為止釋出的套件已高達三百多個,共分為35大類,而且不斷增加中。大家可以想像全世界的頂尖PHP開發者的結合,是一股多大的團結力量。下圖是網站中套件的分類:
PEAR因為釋出的套件太多了,為了管理上的方便所以依套件的功能將套件做分類,同一類的套件在效果上都有相關性,但提供的功能卻不盡相同小接下來,我將所有的分類用表格的方式做一個簡單的介紹,讓大家多了解一下PEAR套件可以提供哪些功能。
這麼多的分類,每一類都會依功能的不同發展出不同的套件。以第一個認證類為例,若您到網站去看,會發現目前該類中共有8個套件
這8個套件都是與身份認證有相關的套件,如果您想要網頁具有身份認證功能,例如,可以讓網頁瀏覽者注冊、輸入帳號密碼、判別身份、給予許可權等等。就會需要用到這些套件。
我再補充一點:有些套件已發展成熟,開發者會將它稱為穩定(stable)版,但若程式庫尚在發展中,但也已經可以使用,開發者將它釋出,通常會稱為測試版(alpha or beta)版。網站也會記錄套件的開發者與維護者的姓名,有時候一個套件是由許多人共同開發而成的。
這些套件的訊息都可在PEAR的網站中找到,我在附錄〈PEAR網站的介紹〉會介紹如何使用PEAR網站。
2-4 使用PEAR程式庫的簡單範例
在這一節中,我用l個簡單的範例來說明程式庫的使用。
假設您想要製作一個網頁,並且希望知道網頁執行時所耗用的時間,則可以借用PEAR所釋出的名為Benchmark的程式庫。這個程式庫開發出來的目的就是用來計算網頁的執行時間。
首先,先將Benchmark程式庫套件安裝好(安裝方法請參考下一章)。接著我們就可以開始撰寫網頁了,例如:我們建立了一個名為show.php的網頁。
基於說明上的方便,我在每一行程式前面加上行號,大家實際上撰寫程式時是不用加上行號的。
第1行與第2行的程式碼首先引用Benchmark套件中的Timer.php網頁,這個網頁內含計算綱頁執行時間的程式庫。include_once可以將某一個外部的網頁放到這個綱頁來,我稱這個動作叫做「引用」, 本例相當於執行了Timer.php與show.php兩個網頁。
第3行,用new關鍵字建立一個Benchmark_Timer物件,並將該物件放入名為$timer的變數中。接著使用細$timer物件的start( )方法啟動時鍾,然後加上我自己的程式碼,此例中是一行簡單的程式。
接著就是要結束時鍾的計時,計算網頁執行所花費的時間並將它顯示出來。第8行先用$timer物件的stop( )方法來停止時鍾,並用第9行$timer物件的timeElapsed( )方法計算時鍾從啟動到停止中間的時間差,並將計算結果放入$totaltime變數中。
最後用echo函式顯示時間差在網頁上。
由結果可清楚看到show.php網頁從開始執行到執行完畢總共花了0.00013613700866699秒,以後可以藉由觀察這個數字來判斷系統效能,或做為程式碼改進的參考。如何,執行時間的計算是不是方便、快速又神奇呢!
如果您需要在其他網頁上也可以有計算網頁的執行時間的功能,只要用上述方式套用在其他PHP網頁上就可以了。
事實上,其他套件的使用方式也跟這個套件的使用方式大同小異.差別只是在每個套件所提供的類別、方法以及使用的參數各有不同而已。
套件雖然好用,但相信讀者還是有許多的疑惑? 例如:
1. Benchmark程式庫套件是怎麼來的?要有哪些前置工作才可以使用它?
2. 我是如何知道使用Benchmark套件的方法?
第1個問題牽涉到如何安裝PEAR套件,以及安裝後套件的管理、升級、刪除等問題,我會在第3章加以介紹。第2個問題,筆者會在第4章針對如何使用套件、如何得到套件的資訊等做一個詳細的說明。
2-5 為何要用PEAR
為何要使用PEAR? 我根據自己的心得,歸納出以下幾點:
1. 省時省力:許多程式碼都被撰寫在程式庫中,開發者只需引用含程式庫的PHP檔,就可以擁有程式庫所提供的功能,省去自行撰寫的時間與精力。
2. 安全:由於這些程式庫套件都將原始碼公開,使用者若發現bug,可以立即向套件的開發者反映,開發者通常也會立即加以修正,讓程式庫的錯誤減到最小。
3. 容易維護:自行撰寫的程式碼與PEAR程式庫的程式碼分開,若PEAR套件因為有新功能被開發或修正錯誤而釋出新版本,只需更新套件即可,完全不會動到自行撰寫的程式碼。
4. 功能強大:PEAR套件所提供的功能非常之多,除了一般常用功能如:資料庫的連結、設定檔的處理、身份的認證、以及表單的處理。另外,較為進階的功能,例如像網路郵局、網路管理、動態方式產生圖形、RSS、Wiki,或者像phpBB的BBCode解析等等都可簡單做到。
5. 讓網頁的程式開發與版面設計分開:PEAR提供許多樣板的程式庫,可讓程式開發與版面設計分開,方便於程式開發者與網頁設計者分工合作。
6. 對學習PHP者是一套絕佳的學習範例:程式庫的註解說明十分詳細,程式碼的撰寫,具有一定的規則與格式,而且完全物質化,讓開發者容易看懂並學習。有些套件還內附教學文件與範例擋,最重要的是:你不用花半毛錢就可得到,我們應該感謝套件的作者們,他們為我們付出了無私的貢獻。
2-6 為什麼要建立PEAR社團
是什麼原因促使全世界的PHP開發者大團結,共同開發出PEAR這個程式寶庫呢? 我就認為有以下幾個原因:
1.遭受其他競爭者的強大競爭:這一點第1章已經說明過了。
2.PHP的物質化:從PHP4加入物質導向的功能後,PHP5更是進一步物質化。除了要與ASP.NET、JSP一拼外,就是方便於程式的模組化,讓程式庫的開發可以進行,有了物質化的功能,程式庫才可以與開發者自行撰寫的程式碼切割。
3.開發者的共同需求:如果每一次開發PHP程式,都要從無到有完全自己來,雖然可以鍛鍊程式功力,但卻沒有效率,也不甚經濟。若一些常用的功能可以用程式庫的方式來處理,將可以解決許多開發者的困難。基於這種所有開發者都共同擁有的需求,讓這些PHP的開發者分工合作,共同發展程式庫,幫助自己也幫助別人。
2-7 PHP的競爭者與優缺點
PHP是在1994年發展出來的,經過四次主要的改寫,成為我們今天所看到的可以廣泛應用且成熟的產品。到2005年四月為止,PHP已經運用於全球超過1900萬個網站上,而且這個數字還在持續快速成長中。
PHP與他們的競爭對手相比,他具有以下優勢:
高效能:不是我黃婆賣瓜,哈哈。.., 我閱覽過許多Asp.NET與Jsp的網頁,效能上實在無法與PHP相比。(Asp.NET與Jsp的使用者應該不會看這篇文章吧)。
● 可以與許多不同的資料庫系統相連結:其他的競爭者也可以,但沒有PHP快。
● 易學易用:PHP的程式碼的寫法非常直覺,容易學習。
● 支援物件導向:這方面Jsp是強項,但PHP5已經追上來了。
● 低成本:根本不用錢。
● 內建非常多的函式庫:記得筆者以前使用Asp,內建的函式庫實在少的可憐。
● 開放原始碼:安全性會比沒有開放的高。
● PEAR程式庫:這是最近的強力武器,用來與強敵們一爭長短。
● 可攜性:無論是各類Unix作業系統,如:Linux,FreeBSD,商業版Unix或Windows作業系統都可以使用PHP。
Asp.NET與Jsp當然也有他們獨特的優點? 例如,Jsp夾帶JAVA強大的功能,它就可以呈現一些目前PHP無法做到的效果。所以Jsp也吸引了許多的使用者,但筆者對Jsp目前的效能實在還不甚滿意,相反地,對PHP的快速度滿意的不得了。
使用哪一種程式,就由您自行做明確的抉擇,不過,若您選擇觀看文章,相信我們應該都是同道中人,PHP的愛好者。
總而言之,許多PHP高手共同構築了一個強大的支援網,若您是PHP的程式開發者,卻對這些高手的好意毫不領情,那不是太可惜了嗎?
❷ php顯示當前時間 並且隨時變化
php的幾種獲取當前時間的函數
方法一date函數
echo date(『y-m-d h:i:s』,time());
//2010-08-29 11:25:26
方法二 time函數
$time = time();
echo date("y-m-d",$time) //2010-08-29
方法三 $_server['server_time']
方法四 strftime
echo strftime ("%hh%m %a %d %b" ,time());
18h24 sunday 21 may
還有一個問題就是時區問題,php環境默認時差與北京時間相差8小時,我們要想獲取正確的時間就必須設置
在php文件開始處 加上date_default_timezone_set('prc');
或在php.ini裡面 date.timezone=prc;嗾。
記得修改了php.ini要重起apache
❸ 在PHP網頁中怎麼編寫代碼實現數字每天自動加10!
如果只是網頁上顯示,不需要存儲人資料庫
則設置初始值$count 還有初始日期$date,
假設$count=10,$date='2015-07-18';
然後進行操作,方法和上面大同小異
$now = strtotime(date('Y-m-d', time()));
if($now > strtotime($date))
{
$add = intval(($now-strtotime($date))/(24*3600));
$count += 10*$add;
}
可以將其封裝成函數
function count($count,$date){
$now = strtotime(date('Y-m-d', time()));
if($now > strtotime($date))
{
$add = intval(($now-strtotime($date))/(24*3600));
$count += 10*$add;
}
return $count;
}
如果要加隨機數那麼就需要加上random函數,而且需要存儲用來判定的$date,可以用cookies存儲也可以用session存儲