PHP (超文本前置處理器)

來源:互聯網
上載者:User

標籤:mod   source   對象序列化   多態性   php版本   code   分支   str   環境   

1.PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本前置處理器”)是一種通用開源指令碼語言。文法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的文法混合了C、Java、Perl以及PHP自創的文法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態網頁面與其他的程式設計語言相比,PHP是將程式嵌入到HTML(標準通用標記語言 (SGML)下的一個應用)文檔中去執行,執行效率比完全產生HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和最佳化代碼運行,使代碼運行更快。

       中文名 超文本前置處理器 外文名 PHP: Hypertext Preprocessor 編程範型 物件導向、命令式編程 設計者 Rasmus Lerdorf 維    護 The PHP Group 最新版本 PHP 5.6.0(28 Aug 2014) 

                       (10)類型檢查:PHP 4.0 支援同一操作符用於評類型檢查:===(3 等號運算子,恒等計算符),為在兩個值和其類型之間作檢查。例如,‘3‘ ===3 將視為假 ( 類型是不同的),而 3 ==3 ( 相等判斷,不比較類型 ) 將視為真。

           環境配置編輯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 在資料庫方面的豐富支援,也是它迅速走紅的原因之一,它支援下列的資料庫或是資料檔案:

Adabas 、D、 DBA、dBase 、dbm 、filePro 、Informix 、InterBase、mSQL 、Microsoft SQL Server、·MySQL、Solid、Sybase、 Oracle 、PostgreSQL

而在 Internet 上它也支援了相當多的通訊協議 (protocol),包括了與電子郵件相關的 IMAP,POP3;網管系統 SNMP;網路新聞NNTP;帳號共用 NIS;全球資訊網 HTTP 及 Apache 伺服器;目錄協議 LDAP 以及其它網路的相關函數。

除此之外,用 PHP 寫出來的 Web 後端 CGI 程式,可以很輕易的移植到不同的作業系統上。例如,先以 Linux 架的網站,在系統負荷過高時,可以快速地將整個系統移到 SUN 工作站上,不用重新編譯 CGI 程式。面對快速發展的 Internet,這是長期規劃的最好選擇。

相關文法及概念

php 支援八種原始類型。

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

兩種複合類型:array(數組)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

}

//迴圈結構

while(condition){

//Statement

}

do{

//Statement

}while(condition);

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

//Statement

}

//數組遍曆專用迴圈語句

foreach($Arrayas$value){

echo$value;

}

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

echo$key;

echo$value;

}

一個PHP執行個體:

12//php中string類型的拼接符和其它大多數採用"+"號運算子不一樣,而是採用"."號運算

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

php對物件導向的支援

物件導向編程的概念:

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

1.抽象資料類型和資訊封裝

2.繼承

3.多態

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

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

classSomething{

//範圍修飾符:public公用的;private私人的;protected受保護的;

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

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

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

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

publicfunctionsetX($v){

$this->x=$v;

}

publicfunctiongetX(){

return$this->x;

}

}

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

使用new操作符來建立一個對象:

1

$obj=newSomething;

然後你可以使用成員函數通過:$obj->setX(5);

$see=$obj->getX();

echo$see;

在這個例子中,setX成員函數將5賦值給對象的成員變數x(不是類的),然後getX返回它的值5。可以象:$obj->x=6那樣通過類引用方式來存取資料成員,這不是一個很好的OOP習慣。我強烈建議通過方法來存取成員變數。如果你把成員變數看成是不可處理的,並且只通過物件控點來使用方法,你將是一個好的OOP程式員。不幸的是,PHP不支援聲明私人成員變數,所以不良代碼在PHP中也是允許的。繼承在PHP中很容易實現,只要使用extends關鍵字。

classAnotherextendsSomething{

private$y;

publicfunctionsetY($v){

$this->y=$v;

}

functiongetY(){

return$this->y;

}

}

"Another"類的對象擁有了父類(Something)的全部的資料成員及方法,而且還加上了自己的資料成員和方法。

你可以使用

$obj2=newAnother;

$obj2->setY(5);

echo$obj2->getY();

PHP只支援單繼承,所以你不能從兩個或兩個以上類派生出新的類來。你可以在衍生類別中重定義一個方法,如果我們在"Another"類中重定義了getX方法(方法重寫),我們就不能使 用"Something"中的getX方法了。如果你在衍生類別中聲明了一個與基派同名的資料成員,那麼當你處理它時, 它將“隱藏”基類的資料成員。

你可以在你的類中定義建構函式。建構函式是一個與類名同名的方法,當你建立一個類的對象時會被調用,例如:

classSomething{

private$x=null;

//新版本的建構函式放棄使用類名,而統一使用__construct()

publicfunction__construct($x){

$this->x=$x;

}

publicfunctionsetX($v){

$this->x=$v;

}

publicfunctiongetX(){

return$this->x;

}

//解構函式

publicfunction__destruct(){

}

}

所以你可以建立一個對象,通過:

1

$obj=newSomething(6);

建構函式會自動地把6賦值給資料變數x。建構函式和方法都是普通的PHP函數(”__“兩個底線,魔術方法),所以你可以使用預設參數。

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

}

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

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

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

預設參數使用C++的方式,所以你不能忽略Y的值,而給X一個預設參數,參數是從左至右賦值的,如果傳入的參數少於要求的參數時,其作的將使用預設參數。

當一個衍生類別的對象被建立時,只有它的建構函式被調用,父類的建構函式沒被調用,如果你想調用基類的建構函式,你必須要在衍生類別的建構函式中用parent::__construct()調用。可以這樣做是在衍生類別中所有父類的方法都是可用的。

classAnotherextendsSomething{

publicfunction__construct(){

parent::__construct(5,6);//顯示調用基類建構函式

}

}

OOP的一個很好的機制是使用抽象類別。抽象類別是不能執行個體化,只能提供給衍生類別一個介面。設計者通常使用抽象類別來強迫程式員從基類派生,這樣可以確保新的類包含一些期待的功能。在PHP中沒有標準的方法,但是:如果你需要這個特性,可以通過定義基類,並在它的建構函式後加上"die" 的調用,這樣就可以保證基類是不可執行個體化的,在每一個方法(介面)後面加上"die" 語句,所以,如果一個程式員在衍生類別中沒有覆蓋方法,將引發一個錯誤。而且因為PHP 是無類型的,你可能需要確認一個對象是來自於你的基類的衍生類別,那麼在基類中增加一個方法來實義類的身份(返回某種標識id),並且在你接收到一個對象參數時校正這個值。當然,如果一個不好的邪惡程式員在衍生類別中覆蓋了這個方法,這種方法就不起作用了,不過一般問題多在懶惰的程式員身上,而不是邪惡的程式員。

當然,能夠讓基類對程式員無法看到是很好的,只要將介面列印出來做他們的工作就可以了。PHP 5 引入了解構函式的概念,這類似於其它物件導向的語言,如 C++。解構函式會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行。[3]

重載(與覆蓋不同)在PHP中不支援,因為PHP是弱類型語言。在OOP中,你可以重載一個方法來實現兩個或重多的方法具有相同的名字,但是有不同數量或類型的參數(這要看語言)。PHP 是一種鬆散類型的語言,所以通過類型重載不起作用,然而通過參數的個數不同來重載也不起作用。

有時在OOP中重載建構函式非常好,這樣你可以通過不同的方法建立對象(變數函數)。在PHP中實現它的技巧是:

classMyclass{

publicfunctionMyclass(){

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

$this->$name();//這裡使用的是一個變數函數,以這個變數的值作為函數的名稱調用

}

publicfunctionMyclass1($x){

//code

}

publicfunctionMyclass2($x,$y){

//code

}

}

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

 

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

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

有時這個非常好用。

多態

多態是對象的一種能力,它可以在運行時刻根據傳遞的對象參數,決定調用哪一個對象的方法。例如,如果你有一個figure的類,它定義了一個draw的方法。並且派生了circle和rectangle 類,在衍生類別中你覆蓋了draw方法,你可能還有一個函數,它希望使用一個參數x,並且可以調用$x->draw()。如果你有多態性,調用哪個draw方法就依賴於你傳遞給這個函數的物件類型。

多態性在象PHP這樣的解釋語言(想象一下一個C++編譯器產生這樣的代碼,你應該調用哪一個方法?你也不知道你擁有的對象是什麼類型的,好,這不是重點)是非常容易和自然的。所以PHP當然支援多態性。

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,也可以使用傳統的過程化編程。然而,對於大型項目,你可能想/需要在PHP 中使用純的OOP去聲明類,而且在你的項目只用對象和類。

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

進階OOP技術

在看過基本的OOP概念後,我就可以向你展示更進階的技術:

序列化(Serializing)

PHP不支援永久對象,在OOP中永久對象是可以在多個應用的引用中保持狀態和功能的對象,這意味著擁有將對象儲存到一個檔案或資料庫中的能力,而且可以在以後裝入對象。這就是所謂的序列化機制。PHP 擁有序列化方法,它可以通過對象進行調用,序列化方法可以返回對象的字串表示。然而,序列化只儲存了對象的成員資料而不包括方法。

在PHP4中,如果你將對象序列化到字串$s中,然後釋放對象,接著還原序列化對象到$obj,你可以繼續使用對象的方法!我不建議這樣去做,因為(a)文檔中沒有保證這種行為在以後的版本中仍然可以使用。(b) 這個可能導致一種誤解,在你把一個序列化後的版本儲存到磁碟並退出指令碼時。當以後運行這個指令碼時,你不能期待著在還原序列化一個對象時,對象的方法也會在那裡,因為字串表示根本就不包括方法。

總而言之,PHP 進行序列化對於儲存對象的成員變數非常有用。(你也可以將相關數組和數組序列化到一個檔案中)。

例子 ;

$obj=newClassfoo();

$str=serialize($obj);//儲存$str到磁碟上

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

你恢複了成員資料,但是不包括方法(根據文檔所說)。這導致了只能通過類似於使用$obj2->x來存取成員變數(你沒有別的方法!)的唯一辦法,所以不要在家裡試它。

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

使用類進行資料存放區PHP和OOP一件非常好的事情就是,你可以很容易地定義一個類來操作某件事情,並且無論何時你想用的時候都可以調用相應的類。假設你有一個HTML表單,使用者可以通過選擇產品ID號來選擇一個產品。在資料庫中有產品的資訊,你想把產品顯示出來,顯示它的價格等等。你擁有不同類型的產品,並且同一個動作可能對不同的產品具有不同的意思。例如,顯示一個聲音可能意味著播放它,但是對於其它種類的產品可能意味著顯示一個存在資料庫中的圖片。你可以使用OOP或PHP來減少編碼並提高品質:

定義一個產品的類,定義它應該有的方法(例如:顯示),然後定義對每一種類型的產品的類,從產品類派後出來(SoundItem類,ViewableItem類,等等),覆蓋在產品類中的方法,使它們按你的想法動作。

根據資料庫中每一種產品的類型(type)欄位給類命名,一個典型的產品表可能有(id,type,price,description,等等欄位)...然後在處理指令碼中,你可以從資料庫中取出type值,然後執行個體化一個名為type的對象:

$obj=new$type();

$obj->action();

這是PHP的一個非常好的特性,你可以不用考慮對象的類型,調用$obj的顯示方法或其它的方法。使用這個技術,你不需要修改指令碼去增加一個新類型的對象,只是增加一個處理它的類。

這個功能很強大,只要定義方法,而不去考慮所有對象的類型,在不同的類中按不同的方法實現它們,然後在主指令碼中對任意對象使用它們,沒有if...else,也不需要兩個程式員,只有高興。

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

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

可以通過這個技術實現國際化,根據使用者所選的語言欄位應用相應的類就可以了,等等。

拷貝和複製

當你建立一個$obj的對象時,你可以通過$obj2=$obj來拷貝對象,新的對象是$obj的一個拷貝(不是一個引用),所以它具有$obj在當時的狀態。有時候,你不想這樣,你只是想產生一個象obj類一樣的一個新的對象,可以通過使用new語句來調用類的建構函式。在PHP中也可以通過序列化,和一個基類來實現,但所有的其它類都要從基類派生出來。

進入危險地區

當你序列化一個對象,你會得到某種格式的字串,如果你感興趣,你可以調究它,其中,字串中有類的名字(太好了!),你可以把它取出來,象:$herring=serialize($obj);

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

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

所以假設你建立了一個"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方法,調用建構函式建立出的對象一樣。我不知道這個對你是否有用,但是Universe類可以知道衍生類別的名字是一個好的經驗。想象是唯一的限制。

模板引擎

Smarty:Smarty的特點是將模板編譯成PHP指令碼,然後執行這些指令碼。很快,非常方便。

Heyes Template Class:一個非常容易使用,但功能強大並且快速的模板引擎,它協助你把頁面配置和設計從代碼中分離。

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

ShellPage:一個簡單易用的類,可以讓你的整個網站布局基於模板檔案,修改模板就能改變整個網站。

STP Simple Template Parser:一個簡單、輕量級並且便於使用的模板分析類。它可以從多個模板中組裝一個頁面,把結果頁面輸出到瀏覽器或者檔案系統。

OO Template Class:一個你可以用在自己程式中的物件導向的模板類。

SimpleTemplate:一個可以建立和結構化網站的模板引擎。它可以解析和編譯模板。

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

Savant:一個強大且輕量級的PEAR相容模板系統。它是非編譯型的,使用PHP語言本身做為它的範本語言。

ETS - easy template system:可以使用完全相同資料重組模板的模板系統。

EasyTemplatePHP:適用於你的網站的一個簡單但是強大的模板系統。

vlibTemplate:一個快速、全能的模板系統,它包含一個緩衝和調試類。

AvanTemplate:多位元組安全的模板引擎,佔用很少系統資源。它支援變數替換,內容塊可以設定顯示或隱藏

Grafx Software’s Fast Template:一個修改版本的Fast Template系統,它包括緩衝功能,偵錯主控台以及沉默去除為賦值塊。

TemplatePower:一個快速、簡單、功能強大的模板類。主要功能有嵌套的動態塊支援,塊/檔案包含支援以及顯示/隱藏未賦值的變數。

TagTemplate:這個庫的功能被設計來使用模板檔案,同時允許你從HTML檔案檢索資訊。

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

PHP Class for Parsing Dreamweaver templates:一個分析Dreamweaver模板的簡單類,被用於Gallery 2 和WordPress的自訂模組中。

MiniTemplator (Template Engine):針對HTML檔案的一個緊湊型模板引擎。對於模板變數和塊定義它具有簡單的文法。其中塊可以嵌套。

Layout Solution:簡化網站開發和維護。它擁有常用的變數和頁面元素使你不需要重複做頁面配置工作。

Cached Fast Template:它已經納入 FastTemplate ,允許你緩衝模板檔案,甚至可以在分離的塊內容上緩衝不同的規格。

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

Brian Lozier’s php based template engine:只有2K大小,非常快並且是物件導向設計。

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

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

Rong_View_Wudimei:Wudimei開發的國產架構Rong Framework的模板引擎,它類似於smarty,優點是速度快,缺點是模板標籤較少,不過夠用了。

架構介紹thinkphp

ThinkPHP是一個免費開源的,快速、簡單的物件導向的 輕量級PHP開發架構 ,創立於2006年初,遵循Apache2開源協議發布,是為了敏捷WEB應用開發和簡化公司專屬應用程式開發而誕生的。ThinkPHP從誕生以來一直秉承簡潔實用的設計原則,在保持出色的效能和至簡的代碼的同時,也注重易用性。並且擁有眾多的原創功能和特性,在社區團隊的積极參与下,在易用性、擴充性和效能方面不斷最佳化和改進,已經成長為國內最領先和最具影響力的WEB應用開發架構,眾多的典型案例確保可以穩定用於商業以及門戶級的開發。

PHP認證層級

PHP課程由初級(IFE)、中級(IPE)和進階(IAE)三個部分。

IFE即Index Front-end Engineer的縮寫,指數前端工程師的意思。

IPE即 Index PHP Engineer 的縮寫,意思是指數PHP工程師。

IAE即 Index architecture/advanced engineer 的縮寫,意思是:指數進階/架構工程師。

PHP安全

PHP其實不過是Web伺服器的一個模組功能,所以首先要保證Web伺服器的安全。當然Web伺服器要安全又必須是先保證系統安全,這樣就扯遠了,無窮無盡。常見的web安全性漏洞有:注入攻擊,跨站攻擊,伺服器自身漏洞等,對應的詳細解釋,詳見:擴充閱讀中的《WEB安全性-2010_OWASP_TOP10》,這裡有很詳盡的解釋。

PHP的優點學習過程和方法

PHP的文法類似於C,Perl,ASP或者JSP。對於那些對上述之一的語言較熟悉的人來說,PHP太簡單了。相反的,如果你對PHP瞭解較多,那麼你對於其他幾種語言的學習都很簡單了。你只需要很短的時間內將PHP的核心語言特點全部掌握,你可能已經非常瞭解HTML,甚至你已經知道怎樣用編輯設計軟體或者手工來製作好看的WEB網站。由於PHP代碼能夠無障礙的添加進你的網站,在你設計和維護網站的同時,你可以很輕鬆的加入PHP使得你的網站更加具有動態特性。

資料庫連接

PHP可以編譯成具有與許多資料庫相串連的函數。PHP與MySQL是絕佳的組合,如果再加上Apache伺服器,就是相當完美的了。你還可以自己編寫外圍的函數取間接存取資料庫。通過這樣的途徑當你更換使用的資料庫時,可以輕鬆的更改編碼以適應這樣的變化。PHPLIB就是最常用的可以提供一般事務需要的一系列基庫。

可擴充性

就像前面說的那樣,PHP已經進入了一個高速發展的時期。對於一個非程式員來說為PHP擴充附加功能可能會比較難,但是對於一個PHP程式員來說並不困難。

PHP延展性

傳統上網頁的互動作用是通過CGI來實現的。CGI程式的伸縮性不很理想,因為它為每一個正在啟動並執行CGI程式開一個獨立進程。解決方案就是將經常用來編寫CGI程式的語

記事本儲存php檔案注意事項

記事本儲存php檔案注意事項

言的解譯器編譯進你的web伺服器(比如mod_perl,JSP)。PHP就可以以這種方式安裝,雖然很少有人願意這樣以CGI方式安裝它。內嵌的PHP可以具有更高的延展性。

PHP免費安裝

PHP原始碼包安裝版:這個版本適合已經有自己獨立的網站網域名稱、網站空間的專業網站建設使用者。使用方法依然其為簡單,只需三步:

第一、到官方網站:下載 PHP原始碼包安裝版最新版本,解壓下載檔案,將其中的全部內容上傳到你的支援PHP的網站空間

第二、改更檔案屬性,請將根目錄下以PHP為尾碼名的檔案和”/include/domain.php”和 “/attachments” 和 “/data”檔案夾以及檔案夾下所有的檔案屬性改成“可讀”、“可寫”、“可執行”,通常是“755”。

第三、開啟你的網站根目錄,系統會自動運行setup安裝程式,按提示點下一步操作即可。

友情提示:當你下載我們的軟體並看到這份說明時,則說明你一定是對企業網站建設有一定的需求或者你是一個網站建設技術學習者。

檔案格式

對於只含有 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個字元,那麼系統將為此付出額外操作指令。這個雖然看起來是小問題,但是對於追求完美的程式員來說也是值得注意並遵守的規範。

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

Php檔案記事本編輯亂碼問題

一般情況下,記事本編輯器在對檔案進行完編輯並儲存之時,其預設編碼為ANSI,中文。然則更多的時候,php在語言環境設定時語言多數為utf-8,直接儲存並用於apache等http-server解析後就會出現亂碼。

為此,應該注意在用記事本編輯完後可將檔案用“另存新檔”的方式對檔案進行儲存,並將“檔案類型”選擇“所有檔案”,編碼與檔案指定語言編碼一致即可。[4]

算數運算子

PHP 的運算子包括算術運算子、賦值運算子、比較子和邏輯運算子。[5]

算數運算子:

加,減,乘,除,模數(取餘)

+、-、*、/、%

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

賦值,加賦值,減賦值、乘賦值、除賦值,連字賦值

=、+=、-=、*=、/=、.=

位元運算符:

位與、位或、位亦或、位非、左移、右移

&、|、^、~、<<、>>

比較子:

等於、全等於、不等於、不全等於、大於、小於、大於等於、小於等於

==、===、!=(<>)、!==、>、<、>=、<=

邏輯運算子:

邏輯與、邏輯或、邏輯非、邏輯亦或

&&、||、!、xor

字串運算子:

. 串連兩個字串



黃花菜已涼
連結:http://www.jianshu.com/p/356737ecea38
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

PHP (超文本前置處理器)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.