PHP (超文本預處理器)

1.PHP(外文名:PHP: Hypertext Preprocessor赁炎,中文名:“超文本預處理器”)是一種通用開源腳本語言盾鳞。語法吸收了C語言、Java和Perl的特點拱燃,利于學習,使用廣泛力惯,主要適用于Web開發(fā)領域碗誉。PHP 獨特的語法混合了C、Java父晶、Perl以及PHP自創(chuàng)的語法哮缺。它可以比CGI或者Perl更快速地執(zhí)行動態(tài)網頁。用PHP做出的動態(tài)頁面與其他的編程語言相比甲喝,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執(zhí)行尝苇,執(zhí)行效率比完全生成HTML標記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼俺猿,編譯可以達到加密和優(yōu)化代碼運行茎匠,使代碼運行更快。

? ? ? ?中文名 超文本預處理器 外文名 PHP: Hypertext Preprocessor 編程范型 面向對象押袍、命令式編程 設計者 Rasmus Lerdorf 維? ? 護 The PHP Group 最新版本 PHP 5.6.0(28 Aug 2014)?

? ? ? ? ? ? ? ? ? ? ? ?(10)類型檢查:PHP 4.0 支持同一操作符用于評類型檢查:===(3 等號運算符,恒等計算符)凯肋,為在兩個值和其類型之間作檢查谊惭。例如,'3' ===3 將視為假 ( 類型是不同的)侮东,而 3 ==3 ( 相等判斷圈盔,不比較類型 ) 將視為真。

? ? ? ? ? ?環(huán)境配置編輯Windows下軟件需求(最新版)Windows Vista 或更高版本悄雅;Apache 2+ 或 IIS 6+ 或 Nginx安裝過程將 Apache 1.3.19 安裝到 C:\Web\apache\ 目錄下驱敲。

將 PHP 4.0.5 解壓到 C:\Web\php\ 目錄下。將 MySQL 3.23.38 安裝到 C:\Web\mysql\ 目錄下宽闲。

將 C:\web\php\php4ts.dll 文件拷貝到 C:\WINNT\system32\ 目錄下众眨。

將 C:\web\php\php.exel 文件拷貝到 C:\WINNT\ 目錄下。

將 C:\web\php\php.ini-dist 文件拷貝到 C:\WINNT\ 目錄下容诬,并將php.ini-dist 更名為 php.ini娩梨。

運行 C:\Web\apache\Apache\Apache.exe-i –n運行 C:\Web\mysql\bin\mysqld-nt.exe--install編輯 C:\WINNT\php.ini找到 “extension_dir = ./ ” 字段,將其改為 extension_dir = "C:\myphp\php\extensions"览徒。編輯 C:\Web\apache\Apache\conf\httpd.conf找到“ #BindAddress*” 字段將其改為 BindAddress127.0.0.1狈定。(如果主機有固定IP地址,此處改為主機IP地址。如 BindAddress 211.101.152.106)纽什,找到 “ServerName” 字段措嵌,將其改為 ServerName localhost。(如主機有固定主機名芦缰,此處改為主機的主機名企巢。如ServerName bn001)。

找到“ ScriptAlias /cgi-bin/ "C:/Web/apache/Apache/cgi-bin/" ” 字段饺藤,在其下面加入 ScriptAlias /php/ "C:/Web/php/"包斑。找到 “# And for PHP 4.x,use: ” 字段,在其后面加入:12AddTypeapplication/x-httpd-phpActionApplication/x-httpd-php"c:/Web/php/php.exe"找到“ #LoadModule usertrack_module modules/mod_usertrack so” 字段涕俗,LoadModule php4_module c:/web/php/sapi/php4apache.dllUNIX下所需軟件php-3.0.14-win32.zip罗丰;php-3.0.14-win32.zip;mysql-shareware-3.22.32-win.zip所有軟件均安裝在/export/home/guoj/下再姑,也可在其他目錄萌抵。

安裝mysql12345678910111213141516171819202122232425262728gzip-dcmysql- ? ? ? ?3.22.30.tar.gz|tarxvf-cdmysql-3.22.30./configure-prefix=/export/home/guoj/mysqlmakemakeinstallscripts/mysql_install_dbcd../mysql/binbin/safe_mysqld&安裝phpapachegzip-dcapache_1.3.11.tar.gz|tarxvf-gzip-dcphp-3.0.11.tar.gz|tarxvf-cdapache_1.3.11./configure-prefix=/export/home/guoj/wwwcd../php-3.0.11./configure-with-apache=/export/home/guoj/apache_1.3.11-with-mysql=/export/home/guoj/mysql-enable-track-varsmakemakeinstallcd../apache_1.3.11./configure--prefix=/export/home/guoj/www--activate-module=src/modules/php3/libphp3.aPmakemakeinstallcd../php-3.0.11cd../php3.ini-distphp3.iniviphp3.ini修改php3.inidoc_root=/export/home/guoj/www/htdocs/extension_dir=/export/home/guoj/php-3.0.11/extension=php3_mysql.dllcpphp3.ini/usr/local/lib/php3.inivi../www/conf/httpd.conf加上以下幾句:1234OptionsFollowSymLinks

AllowOverrideNone

../www/bin/apachectlstart

其他方面編輯

PHP 在數(shù)據(jù)庫方面的豐富支持,也是它迅速走紅的原因之一元镀,它支持下列的數(shù)據(jù)庫或是數(shù)據(jù)文件:

Adabas 绍填、D、 DBA栖疑、dBase 讨永、dbm 、filePro 遇革、Informix 卿闹、InterBase、mSQL 萝快、Microsoft SQL Server锻霎、·MySQL、Solid揪漩、Sybase旋恼、 Oracle 、PostgreSQL

而在 Internet 上它也支持了相當多的通訊協(xié)議 (protocol)奄容,包括了與電子郵件相關的 IMAP,POP3冰更;網管系統(tǒng) SNMP;網絡新聞NNTP嫩海;帳號共用 NIS冬殃;全球信息網 HTTP 及 Apache 服務器;目錄協(xié)議 LDAP 以及其它網絡的相關函數(shù)叁怪。

除此之外审葬,用 PHP 寫出來的 Web 后端 CGI 程序,可以很輕易的移植到不同的操作系統(tǒng)上。例如涣觉,先以 Linux 架的網站痴荐,在系統(tǒng)負荷過高時,可以快速地將整個系統(tǒng)移到 SUN 工作站上官册,不用重新編譯 CGI 程序生兆。面對快速發(fā)展的 Internet,這是長期規(guī)劃的最好選擇膝宁。

相關語法及概念

php 支持八種原始類型鸦难。

四種標量類型:boolean(布爾型) integer(整型) float(浮點型,也作“double”) string(字符串)

兩種復合類型:array(數(shù)組)object(對象)

最后是兩種特殊類型:resource(資源)NULL

為了確保代碼的易讀性员淫,本手冊還介紹了一些偽類型:mixed合蔽、number、callback

語法(例子中均忽略了PHP代碼邊界符 ):

注釋的語法有三種:

//comment這個是單行注釋

/*comment*/這個是多行注釋

#comment這個是腳本類型注釋介返,很少用

基本的結構控制語句:

//分支結構(選擇結構)

if(condition){

//Statement

}

if(condition){

//Statement

}else{

//Statement

}

if(condition){

//Statement

}elseif(condition){

//Statement

}

//多分支結構

switch($變量){

case'值':

//Statement

break;

case'值2':

//Statement

break;

default:

//Statement

}

//循環(huán)結構

while(condition){

//Statement

}

do{

//Statement

}while(condition);

for(初始化;判斷;變化){

//Statement

}

//數(shù)組遍歷專用循環(huán)語句

foreach($Arrayas$value){

echo$value;

}

foreach($Arrayas$key=>$value){

echo$key;

echo$value;

}

一個PHP實例:

12//php中string類型的拼接符和其它大多數(shù)采用"+"號運算符不一樣拴事,而是采用"."號運算

//在一般語言中用于對象屬性和方法調用的"."運算符,則和C語言的結構體一樣用"=>"

php對面向對象的支持

面向對象編程的概念:

不同的作者之間說法可能不一樣圣蝎,但是一個OOP語言必須有以下幾方面:

1.抽象數(shù)據(jù)類型和信息封裝

2.繼承

3.多態(tài)

在PHP中是通過類來完成封裝的:

//在OOP類中刃宵,通常采用大雙駝峰命名法,每個單詞的首字母都大寫

classSomething{

//作用域修飾符:public公共的徘公;private私有的牲证;protected受保護的;

//屬性的名稱一般用全小寫

private$x=null;//在編程建議中关面,內部使用的屬性應該給私有修飾符从隆,然后通過方法取值賦值

//方法的名稱一般用小駝峰命名法,第一個單詞全小寫缭裆,剩下的單詞首字母大寫

//因為PHP不會自動為變量使用$this所以必須主動加上$this偽變量來指向操作的對象

publicfunctionsetX($v){

$this->x=$v;

}

publicfunctiongetX(){

return$this->x;

}

}

當然你可以按自己的喜好進行定義,但最好保持一種標準寿烟,這樣會更有效澈驼。數(shù)據(jù)成員在類中使用"var"聲明來定義,在給數(shù)據(jù)成員賦值之前筛武,它們是沒有類型的缝其。一個數(shù)據(jù)成員可以是一個整數(shù),一個數(shù)組徘六,一個相關數(shù)組(associative array)或者是一個對象内边。方法在類中被定義成函數(shù)形式,在方法中訪問類成員變量時待锈,你應該使用$this->name漠其,否則對一個方法來說,它只能是局部變量。

使用new操作符來創(chuàng)建一個對象:

1

$obj=newSomething;

然后你可以使用成員函數(shù)通過:$obj->setX(5)和屎;

$see=$obj->getX();

echo$see;

在這個例子中拴驮,setX成員函數(shù)將5賦值給對象的成員變量x(不是類的),然后getX返回它的值5柴信√灼。可以象:$obj->x=6那樣通過類引用方式來存取數(shù)據(jù)成員,這不是一個很好的OOP習慣随常。我強烈建議通過方法來存取成員變量潜沦。如果你把成員變量看成是不可處理的,并且只通過對象句柄來使用方法绪氛,你將是一個好的OOP程序員唆鸡。不幸的是,PHP不支持聲明私有成員變量钞楼,所以不良代碼在PHP中也是允許的屿附。繼承在PHP中很容易實現(xiàn),只要使用extends關鍵字婶恼。

classAnotherextendsSomething{

private$y;

publicfunctionsetY($v){

$this->y=$v;

}

functiongetY(){

return$this->y;

}

}

"Another"類的對象擁有了父類(Something)的全部的數(shù)據(jù)成員及方法楞卡,而且還加上了自己的數(shù)據(jù)成員和方法。

你可以使用

$obj2=newAnother;

$obj2->setY(5);

echo$obj2->getY();

PHP只支持單繼承宛琅,所以你不能從兩個或兩個以上類派生出新的類來刻蟹。你可以在派生類中重定義一個方法,如果我們在"Another"類中重定義了getX方法(方法重寫)嘿辟,我們就不能使 用"Something"中的getX方法了舆瘪。如果你在派生類中聲明了一個與基派同名的數(shù)據(jù)成員,那么當你處理它時红伦, 它將“隱藏”基類的數(shù)據(jù)成員英古。

你可以在你的類中定義構造函數(shù)。構造函數(shù)是一個與類名同名的方法昙读,當你創(chuàng)建一個類的對象時會被調用召调,例如:

classSomething{

private$x=null;

//新版本的構造函數(shù)放棄使用類名,而統(tǒng)一使用__construct()

publicfunction__construct($x){

$this->x=$x;

}

publicfunctionsetX($v){

$this->x=$v;

}

publicfunctiongetX(){

return$this->x;

}

//析構函數(shù)

publicfunction__destruct(){

}

}

所以你可以創(chuàng)建一個對象蛮浑,通過:

1

$obj=newSomething(6)唠叛;

構造函數(shù)會自動地把6賦值給數(shù)據(jù)變量x。構造函數(shù)和方法都是普通的PHP函數(shù)(”__“兩個下劃線沮稚,魔術方法)艺沼,所以你可以使用缺省參數(shù)。

publicfunction__construct($x="3",$y="5"){

}

接著:$obj=newSomething();//x=3andy=5

$obj=newSomething(8);//x=8andy=5

$obj=newSomething(8,9);//x=8andy=9

缺省參數(shù)使用C++的方式蕴掏,所以你不能忽略Y的值障般,而給X一個缺省參數(shù)调鲸,參數(shù)是從左到右賦值的,如果傳入的參數(shù)少于要求的參數(shù)時剩拢,其作的將使用缺省參數(shù)线得。

當一個派生類的對象被創(chuàng)建時,只有它的構造函數(shù)被調用徐伐,父類的構造函數(shù)沒被調用贯钩,如果你想調用基類的構造函數(shù),你必須要在派生類的構造函數(shù)中用parent::__construct()調用办素〗抢祝可以這樣做是在派生類中所有父類的方法都是可用的。

classAnotherextendsSomething{

publicfunction__construct(){

parent::__construct(5,6);//顯示調用基類構造函數(shù)

}

}

OOP的一個很好的機制是使用抽象類性穿。抽象類是不能實例化勺三,只能提供給派生類一個接口。設計者通常使用抽象類來強迫程序員從基類派生需曾,這樣可以確保新的類包含一些期待的功能吗坚。在PHP中沒有標準的方法,但是:如果你需要這個特性呆万,可以通過定義基類商源,并在它的構造函數(shù)后加上"die" 的調用,這樣就可以保證基類是不可實例化的谋减,在每一個方法(接口)后面加上"die" 語句牡彻,所以,如果一個程序員在派生類中沒有覆蓋方法出爹,將引發(fā)一個錯誤庄吼。而且因為PHP 是無類型的,你可能需要確認一個對象是來自于你的基類的派生類严就,那么在基類中增加一個方法來實義類的身份(返回某種標識id)总寻,并且在你接收到一個對象參數(shù)時校驗這個值。當然梢为,如果一個不好的邪惡程序員在派生類中覆蓋了這個方法废菱,這種方法就不起作用了,不過一般問題多在懶惰的程序員身上抖誉,而不是邪惡的程序員。

當然衰倦,能夠讓基類對程序員無法看到是很好的袒炉,只要將接口打印出來做他們的工作就可以了。PHP 5 引入了析構函數(shù)的概念樊零,這類似于其它面向對象的語言我磁,如 C++孽文。析構函數(shù)會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執(zhí)行。[3]

重載(與覆蓋不同)在PHP中不支持夺艰,因為PHP是弱類型語言芋哭。在OOP中,你可以重載一個方法來實現(xiàn)兩個或重多的方法具有相同的名字郁副,但是有不同數(shù)量或類型的參數(shù)(這要看語言)减牺。PHP 是一種松散類型的語言,所以通過類型重載不起作用存谎,然而通過參數(shù)的個數(shù)不同來重載也不起作用拔疚。

有時在OOP中重載構造函數(shù)非常好,這樣你可以通過不同的方法創(chuàng)建對象(變量函數(shù))既荚。在PHP中實現(xiàn)它的技巧是:

classMyclass{

publicfunctionMyclass(){

$name="Myclass".func_num_args();//這個函數(shù)返回的是傳過來參數(shù)的個數(shù)

$this->$name();//這里使用的是一個變量函數(shù)稚失,以這個變量的值作為函數(shù)的名稱調用

}

publicfunctionMyclass1($x){

//code

}

publicfunctionMyclass2($x,$y){

//code

}

}

通過在類中的額外的處理,使用這個類對用戶是透明的:


$obj1=newMyclass('1');//將調用Myclass1

$obj2=newMyclass('1','2');//將調用Myclass2

有時這個非常好用恰聘。

多態(tài)

多態(tài)是對象的一種能力句各,它可以在運行時刻根據(jù)傳遞的對象參數(shù),決定調用哪一個對象的方法晴叨。例如凿宾,如果你有一個figure的類,它定義了一個draw的方法篙螟。并且派生了circle和rectangle 類菌湃,在派生類中你覆蓋了draw方法,你可能還有一個函數(shù)遍略,它希望使用一個參數(shù)x惧所,并且可以調用$x->draw()。如果你有多態(tài)性绪杏,調用哪個draw方法就依賴于你傳遞給這個函數(shù)的對象類型下愈。

多態(tài)性在象PHP這樣的解釋語言(想象一下一個C++編譯器生成這樣的代碼,你應該調用哪一個方法蕾久?你也不知道你擁有的對象是什么類型的势似,好,這不是重點)是非常容易和自然的僧著。所以PHP當然支持多態(tài)性履因。

classCalc{

functionniceDrawing($x){//假設這是Board類的一個方法

$x->draw();

}

}

classCircle{

publicfunctiondraw(){

echo"畫了一個圓";

}

}

classRectangle{

publicfunctiondraw(){

echo"畫了一個矩形";

}

}

$board=newCalc;

$obj=newCircle(3,187);

$obj2=newRectangle(4,5);

$board->niceDrawing($obj);//將調用Circle的draw方法

$board->niceDrawing($obj2);//將調用Rectangle的draw方法

用PHP進行面向對象編程

一些"純化論者(purists)"可能會說PHP不是一個真正的面向對象的語言,這是事實盹愚。PHP 是一個混合型語言栅迄,你可以使用OOP,也可以使用傳統(tǒng)的過程化編程皆怕。然而毅舆,對于大型項目西篓,你可能想/需要在PHP 中使用純的OOP去聲明類,而且在你的項目只用對象和類憋活。

隨著項目越來越大岂津,使用OOP可能會有幫助,OOP代碼很容易維護悦即,容易理解和重用吮成。這些就是軟件工程的基礎。在基于web的項目中應用這些概念就成為將來網站成功的關鍵盐欺。

高級OOP技術

在看過基本的OOP概念后赁豆,我就可以向你展示更高級的技術:

序列化(Serializing)

PHP不支持永久對象,在OOP中永久對象是可以在多個應用的引用中保持狀態(tài)和功能的對象冗美,這意味著擁有將對象保存到一個文件或數(shù)據(jù)庫中的能力魔种,而且可以在以后裝入對象。這就是所謂的序列化機制粉洼。PHP 擁有序列化方法节预,它可以通過對象進行調用,序列化方法可以返回對象的字符串表示属韧。然而安拟,序列化只保存了對象的成員數(shù)據(jù)而不包括方法。

在PHP4中宵喂,如果你將對象序列化到字符串$s中糠赦,然后釋放對象,接著反序列化對象到$obj锅棕,你可以繼續(xù)使用對象的方法拙泽!我不建議這樣去做,因為(a)文檔中沒有保證這種行為在以后的版本中仍然可以使用裸燎。(b) 這個可能導致一種誤解顾瞻,在你把一個序列化后的版本保存到磁盤并退出腳本時。當以后運行這個腳本時德绿,你不能期待著在反序列化一個對象時荷荤,對象的方法也會在那里,因為字符串表示根本就不包括方法移稳。

總而言之蕴纳,PHP 進行序列化對于保存對象的成員變量非常有用。(你也可以將相關數(shù)組和數(shù)組序列化到一個文件中)个粱。

例子 袱蚓;

$obj=newClassfoo();

$str=serialize($obj);//保存$str到磁盤上

$obj2=unserialize($str);//幾個月以后//從磁盤中裝入str

你恢復了成員數(shù)據(jù),但是不包括方法(根據(jù)文檔所說)几蜻。這導致了只能通過類似于使用$obj2->x來存取成員變量(你沒有別的方法@恕)的唯一辦法,所以不要在家里試它梭稚。

有一些辦法可以解決這個問題颖低,我把它留著,因為對這篇簡潔的文章來說弧烤,他們太不好忱屑。我會很高興地歡迎在PHP的后續(xù)版本中有全序列化的特性。

使用類進行數(shù)據(jù)存儲PHP和OOP一件非常好的事情就是暇昂,你可以很容易地定義一個類來操作某件事情莺戒,并且無論何時你想用的時候都可以調用相應的類。假設你有一個HTML表單急波,用戶可以通過選擇產品ID號來選擇一個產品从铲。在數(shù)據(jù)庫中有產品的信息,你想把產品顯示出來澄暮,顯示它的價格等等名段。你擁有不同類型的產品,并且同一個動作可能對不同的產品具有不同的意思泣懊。例如伸辟,顯示一個聲音可能意味著播放它,但是對于其它種類的產品可能意味著顯示一個存在數(shù)據(jù)庫中的圖片馍刮。你可以使用OOP或PHP來減少編碼并提高質量:

定義一個產品的類信夫,定義它應該有的方法(例如:顯示),然后定義對每一種類型的產品的類卡啰,從產品類派后出來(SoundItem類静稻,ViewableItem類,等等)碎乃,覆蓋在產品類中的方法姊扔,使它們按你的想法動作。

根據(jù)數(shù)據(jù)庫中每一種產品的類型(type)字段給類命名梅誓,一個典型的產品表可能有(id,type,price,description恰梢,等等字段)...然后在處理腳本中,你可以從數(shù)據(jù)庫中取出type值梗掰,然后實例化一個名為type的對象:

$obj=new$type();

$obj->action();

這是PHP的一個非常好的特性嵌言,你可以不用考慮對象的類型,調用$obj的顯示方法或其它的方法及穗。使用這個技術摧茴,你不需要修改腳本去增加一個新類型的對象,只是增加一個處理它的類埂陆。

這個功能很強大苛白,只要定義方法娃豹,而不去考慮所有對象的類型,在不同的類中按不同的方法實現(xiàn)它們购裙,然后在主腳本中對任意對象使用它們懂版,沒有if...else,也不需要兩個程序員躏率,只有高興躯畴。

你同意編程是容易的,維護是便宜的薇芝,可重用是真的嗎蓬抄?

如果你管理一組程序員,分配工作就是很簡單的了夯到,每個人可能負責一個類型的對象和處理它的類嚷缭。

可以通過這個技術實現(xiàn)國際化,根據(jù)用戶所選的語言字段應用相應的類就可以了黄娘,等等峭状。

拷貝和克隆

當你創(chuàng)建一個$obj的對象時,你可以通過$obj2=$obj來拷貝對象逼争,新的對象是$obj的一個拷貝(不是一個引用)优床,所以它具有$obj在當時的狀態(tài)。有時候誓焦,你不想這樣胆敞,你只是想生成一個象obj類一樣的一個新的對象,可以通過使用new語句來調用類的構造函數(shù)杂伟。在PHP中也可以通過序列化移层,和一個基類來實現(xiàn),但所有的其它類都要從基類派生出來赫粥。

進入危險區(qū)域

當你序列化一個對象观话,你會得到某種格式的字符串,如果你感興趣越平,你可以調究它频蛔,其中,字符串中有類的名字(太好了G嘏选)晦溪,你可以把它取出來,象:$herring=serialize($obj);

$vec=explode(':',$herring);//以:為標識符把字符串拆分成一個數(shù)組

$nam=str_replace("\",'',$vec[2]);

所以假設你創(chuàng)建了一個"Universe"的類挣跋,并且強制所有的類都必須從universe擴展三圆,你可以在universe 中定義一個clone的方法,如下:

classUniverse{

//在新的PHP版本中克隆(__clone())是一個魔術方法舟肉,不要和這個方法搞混了

functionclone(){

$herring=serialize($this);

$vec=explode(':',$herring);

$nam=str_replace("\"",'',$vec[2]);

$ret=new$nam;

return$ret;

}

}//然后

$obj=newSomething();//從Universe擴展

$other=$obj->clone();

你所得到的是一個新的Something類的對象修噪,它同使用new方法,調用構造函數(shù)創(chuàng)建出的對象一樣路媚。我不知道這個對你是否有用割按,但是Universe類可以知道派生類的名字是一個好的經驗。想象是唯一的限制磷籍。

模板引擎

Smarty:Smarty的特點是將模板編譯成PHP腳本,然后執(zhí)行這些腳本现柠。很快院领,非常方便。

Heyes Template Class:一個非常容易使用够吩,但功能強大并且快速的模板引擎比然,它幫助你把頁面布局和設計從代碼中分離。

FastTemplate:一個簡單的變量插值模板類周循,它分析你的模板强法,把變量的值從HTML代碼中分離處理。

ShellPage:一個簡單易用的類湾笛,可以讓你的整個網站布局基于模板文件饮怯,修改模板就能改變整個站點。

STP Simple Template Parser:一個簡單嚎研、輕量級并且易于使用的模板分析類蓖墅。它可以從多個模板中組裝一個頁面,把結果頁面輸出到瀏覽器或者文件系統(tǒng)临扮。

OO Template Class:一個你可以用在自己程序中的面向對象的模板類论矾。

SimpleTemplate:一個可以創(chuàng)建和結構化網站的模板引擎。它可以解析和編譯模板杆勇。

bTemplate:短小但是快速的模板類贪壳,允許你把PHP邏輯代碼從HTML修飾代碼中分離。

Savant:一個強大且輕量級的PEAR兼容模板系統(tǒng)蚜退。它是非編譯型的闰靴,使用PHP語言本身做為它的模板語言。

ETS - easy template system:可以使用完全相同數(shù)據(jù)重組模板的模板系統(tǒng)关霸。

EasyTemplatePHP:適用于你的站點的一個簡單但是強大的模板系統(tǒng)传黄。

vlibTemplate:一個快速、全能的模板系統(tǒng)队寇,它包含一個緩存和調試類膘掰。

AvanTemplate:多字節(jié)安全的模板引擎,占用很少系統(tǒng)資源。它支持變量替換识埋,內容塊可以設置顯示或隱藏

Grafx Software’s Fast Template:一個修改版本的Fast Template系統(tǒng)凡伊,它包括緩存功能,調試控制臺以及沉默去除為賦值塊窒舟。

TemplatePower:一個快速系忙、簡單、功能強大的模板類惠豺。主要功能有嵌套的動態(tài)塊支持银还,塊/文件包含支持以及顯示/隱藏未賦值的變量。

TagTemplate:這個庫的功能被設計來使用模板文件洁墙,同時允許你從HTML文件檢索信息蛹疯。

htmltmpl: templating engine:一個適用于Python和PHP的模板引擎。它面向希望在項目中分離代碼和設計的web應用開發(fā)人員热监。

PHP Class for Parsing Dreamweaver templates:一個分析Dreamweaver模板的簡單類捺弦,被用于Gallery 2 和WordPress的自定義模塊中。

MiniTemplator (Template Engine):針對HTML文件的一個緊湊型模板引擎孝扛。對于模板變量和塊定義它具有簡單的語法列吼。其中塊可以嵌套。

Layout Solution:簡化網站開發(fā)和維護苦始。它擁有常用的變量和頁面元素使你不需要重復做頁面布局工作寞钥。

Cached Fast Template:它已經納入 FastTemplate ,允許你緩存模板文件盈简,甚至可以在分離的塊內容上緩存不同的規(guī)格凑耻。

TinyButStrong:一個支持MySQL,Odbc,Sql-Server和ADODB的模板引擎。它包含7個方法和兩個屬性柠贤。

Brian Lozier’s php based template engine:只有2K大小香浩,非常快并且是面向對象設計臼勉。

WACT:一個從設計中分離代碼的模板引擎邻吭。

PHPTAL:一個PHP下面的XML/XHTML模板庫。

Rong_View_Wudimei:Wudimei開發(fā)的國產框架Rong Framework的模板引擎宴霸,它類似于smarty囱晴,優(yōu)點是速度快,缺點是模板標簽較少瓢谢,不過夠用了畸写。

框架介紹thinkphp

ThinkPHP是一個免費開源的,快速氓扛、簡單的面向對象的 輕量級PHP開發(fā)框架 枯芬,創(chuàng)立于2006年初论笔,遵循Apache2開源協(xié)議發(fā)布,是為了敏捷WEB應用開發(fā)和簡化企業(yè)應用開發(fā)而誕生的千所。ThinkPHP從誕生以來一直秉承簡潔實用的設計原則狂魔,在保持出色的性能和至簡的代碼的同時,也注重易用性淫痰。并且擁有眾多的原創(chuàng)功能和特性最楷,在社區(qū)團隊的積極參與下,在易用性待错、擴展性和性能方面不斷優(yōu)化和改進籽孙,已經成長為國內最領先和最具影響力的WEB應用開發(fā)框架,眾多的典型案例確被鸲恚可以穩(wěn)定用于商業(yè)以及門戶級的開發(fā)蚯撩。

PHP認證級別

PHP課程由初級(IFE)、中級(IPE)和高級(IAE)三個部分烛占。

IFE即Index Front-end Engineer的縮寫,指數(shù)前端工程師的意思沟启。

IPE即 Index PHP Engineer 的縮寫忆家,意思是指數(shù)PHP工程師。

IAE即 Index architecture/advanced engineer 的縮寫德迹,意思是:指數(shù)高級/架構工程師芽卿。

PHP安全

PHP其實不過是Web服務器的一個模塊功能,所以首先要保證Web服務器的安全胳搞。當然Web服務器要安全又必須是先保證系統(tǒng)安全卸例,這樣就扯遠了,無窮無盡肌毅。常見的web安全漏洞有:注入攻擊筷转,跨站攻擊,服務器自身漏洞等悬而,對應的詳細解釋呜舒,詳見:擴展閱讀中的《WEB安全性-2010_OWASP_TOP10》,這里有很詳盡的解釋笨奠。

PHP的優(yōu)點學習過程和方法

PHP的語法類似于C袭蝗,Perl,ASP或者JSP般婆。對于那些對上述之一的語言較熟悉的人來說到腥,PHP太簡單了。相反的蔚袍,如果你對PHP了解較多乡范,那么你對于其他幾種語言的學習都很簡單了。你只需要很短的時間內將PHP的核心語言特點全部掌握,你可能已經非常了解HTML篓足,甚至你已經知道怎樣用編輯設計軟件或者手工來制作好看的WEB站點段誊。由于PHP代碼能夠無障礙的添加進你的站點,在你設計和維護站點的同時栈拖,你可以很輕松的加入PHP使得你的站點更加具有動態(tài)特性连舍。

數(shù)據(jù)庫連接

PHP可以編譯成具有與許多數(shù)據(jù)庫相連接的函數(shù)。PHP與MySQL是絕佳的組合涩哟,如果再加上Apache服務器索赏,就是相當完美的了。你還可以自己編寫外圍的函數(shù)取間接存取數(shù)據(jù)庫贴彼。通過這樣的途徑當你更換使用的數(shù)據(jù)庫時潜腻,可以輕松的更改編碼以適應這樣的變化。PHPLIB就是最常用的可以提供一般事務需要的一系列基庫器仗。

可擴展性

就像前面說的那樣融涣,PHP已經進入了一個高速發(fā)展的時期。對于一個非程序員來說為PHP擴展附加功能可能會比較難精钮,但是對于一個PHP程序員來說并不困難威鹿。

PHP可伸縮性

傳統(tǒng)上網頁的交互作用是通過CGI來實現(xiàn)的。CGI程序的伸縮性不很理想轨香,因為它為每一個正在運行的CGI程序開一個獨立進程忽你。解決方法就是將經常用來編寫CGI程序的語

記事本保存php文件注意事項

記事本保存php文件注意事項

言的解釋器編譯進你的web服務器(比如mod_perl,JSP)。PHP就可以以這種方式安裝臂容,雖然很少有人愿意這樣以CGI方式安裝它科雳。內嵌的PHP可以具有更高的可伸縮性。

PHP免費安裝

PHP源代碼包安裝版:這個版本適合已經有自己獨立的網站域名脓杉、網站空間的專業(yè)網站建設用戶糟秘。使用方法依然其為簡單,只需三步:

第一球散、到官方網站:下載 PHP源代碼包安裝版最新版本蚌堵,解壓下載文件,將其中的全部內容上傳到你的支持PHP的網站空間

第二沛婴、改更文件屬性吼畏,請將根目錄下以PHP為后綴名的文件和”/include/domain.php”和 “/attachments” 和 “/data”文件夾以及文件夾下所有的文件屬性改成“可讀”、“可寫”嘁灯、“可執(zhí)行”泻蚊,通常是“755”。

第三丑婿、打開你的網站根目錄性雄,系統(tǒng)會自動運行setup安裝程序没卸,按提示點下一步操作即可。

友情提示:當你下載我們的軟件并看到這份說明時秒旋,則說明你一定是對企業(yè)網站建設有一定的需求或者你是一個網站建設技術學習者约计。

文件格式

對于只含有 php 代碼的文件,我們將在文件結尾處忽略掉 "?>"迁筛。這是為了防止多余的空格或者其它字符影響到代碼煤蚌。

例如:

$foo = 'foo';

縮進應該能夠反映出代碼的邏輯結果,盡量使用四個空格细卧,禁止使用制表符TAB尉桩,因為這樣能夠保證有跨客戶端編程器軟件的靈活性。

例如:if(1==$x){

$indented_code=1;

if(1==$new_line){

$more_indented_code=1;

}

}

變量賦值建議保持相等間距和排列贪庙。

例如:$variable='demo';

$var='demo2';

每行代碼長度應控制在80個字符以內蜘犁,最長不超過120個字符。因為 linux 讀入文件一般以80列為單位止邮,就是說如果一行代碼超過80個字符这橙,那么系統(tǒng)將為此付出額外操作指令。這個雖然看起來是小問題导披,但是對于追求完美的程序員來說也是值得注意并遵守的規(guī)范析恋。

每行結尾不允許有多余的空格。

Php文件記事本編輯亂碼問題

一般情況下盛卡,記事本編輯器在對文件進行完編輯并保存之時,其默認編碼為ANSI筑凫,中文滑沧。然則更多的時候,php在語言環(huán)境設置時語言多數(shù)為utf-8巍实,直接保存并用于apache等http-server解析后就會出現(xiàn)亂碼滓技。

為此,應該注意在用記事本編輯完后可將文件用“另存為”的方式對文件進行保存棚潦,并將“文件類型”選擇“所有文件”令漂,編碼與文件指定語言編碼一致即可。[4]

算數(shù)運算符

PHP 的運算符包括算術運算符丸边、賦值運算符叠必、比較運算符和邏輯運算符。[5]

算數(shù)運算符:

加妹窖,減纬朝,乘,除骄呼,取模(取余)

+共苛、-判没、*、/隅茎、%

賦值運算符:(以下解釋在許多書中有所不同)

賦值澄峰,加賦值,減賦值辟犀、乘賦值俏竞、除賦值,連字賦值

=踪蹬、+=胞此、-=、*=跃捣、/=漱牵、.=

位運算符:

位與、位或疚漆、位亦或酣胀、位非、左移娶聘、右移

&闻镶、|、^丸升、~铆农、<<、>>

比較運算符:

等于狡耻、全等于简烤、不等于界轩、不全等于悉抵、大于茬贵、小于、大于等于沼头、小于等于

==爷绘、===、!=(<>)进倍、!==土至、>、<猾昆、>=毙籽、<=

邏輯運算符:

邏輯與、邏輯或毡庆、邏輯非坑赡、邏輯亦或

&&烙如、||、!毅否、xor

字符串運算符:

. 連接兩個字符串

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末亚铁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子螟加,更是在濱河造成了極大的恐慌徘溢,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捆探,死亡現(xiàn)場離奇詭異然爆,居然都是意外死亡,警方通過查閱死者的電腦和手機黍图,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門曾雕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人助被,你說我怎么就攤上這事剖张。” “怎么了揩环?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵搔弄,是天一觀的道長。 經常有香客問我丰滑,道長顾犹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任褒墨,我火速辦了婚禮炫刷,結果婚禮上,老公的妹妹穿的比我還像新娘貌亭。我一直安慰自己,他們只是感情好认臊,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布圃庭。 她就那樣靜靜地躺著,像睡著了一般失晴。 火紅的嫁衣襯著肌膚如雪剧腻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天涂屁,我揣著相機與錄音书在,去河邊找鬼。 笑死拆又,一個胖子當著我的面吹牛儒旬,可吹牛的內容都是我干的栏账。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼栈源,長吁一口氣:“原來是場噩夢啊……” “哼挡爵!你這毒婦竟也來了?” 一聲冷哼從身側響起甚垦,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤茶鹃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后艰亮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闭翩,經...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年迄埃,在試婚紗的時候發(fā)現(xiàn)自己被綠了疗韵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡调俘,死狀恐怖伶棒,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情彩库,我是刑警寧澤肤无,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站骇钦,受9級特大地震影響宛渐,放射性物質發(fā)生泄漏。R本人自食惡果不足惜眯搭,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一窥翩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鳞仙,春花似錦寇蚊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至借笙,卻和暖如春扒怖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背业稼。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工盗痒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人低散。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓俯邓,卻偏偏與公主長得像骡楼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子看成,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內容

  • PHP(外文名:PHP: Hypertext Preprocessor君编,中文名:“超文本預處理器”)是一種通用開源...
    ZZS_簡閱讀 488評論 0 0
  • PHP 學習目錄 ├─PHP視頻教程 1 LAMP網站構建 │ ├─PHP教程 1.1.1 新版視頻形式介紹│ ...
    曹淵說創(chuàng)業(yè)閱讀 16,147評論 29 417
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法川慌,內部類的語法吃嘿,繼承相關的語法,異常的語法梦重,線程的語...
    子非魚_t_閱讀 31,581評論 18 399
  • 老瓜魔兑燥,好久沒寫信給你了。相隔這么久沒寫的一個主要原因是我的認知迭代在快速更疊琴拧,以至于我有一些迷茫以及間歇性的低落...
    黑客思維玩游戲閱讀 339評論 0 0
  • 版本記錄 前言 我們app中經常用到pop動畫降瞳,比較常見的比如微信和QQ的加人等,這些都是pop動畫蚓胸,oc中有原生...
    刀客傳奇閱讀 1,039評論 0 0