秦紫玲
PHP主要使用來做網(wǎng)站以及Web應(yīng)用開發(fā)的。跟JAVA區(qū)別如下:
一、語言優(yōu)勢(shì)不同
1、PHP:即“超文本預(yù)處理器”,是一種通用開源腳本語言。在服務(wù)器端執(zhí)行的腳本語言。
2、JAVA:是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念。
二、語法不同
1、PHP:語法混合了C、Java、Perl以及 PHP 自創(chuàng)的語法。
2、JAVA:作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。
三、特點(diǎn)不同
1、PHP:利于學(xué)習(xí),使用廣泛,主要適用于Web開發(fā)領(lǐng)域。
2、JAVA:具有簡(jiǎn)單性、面向?qū)ο?、分布式、健壯性、安全性、平臺(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn)。
參考資料來源:百度百科-Java
參考資料來源:百度百科-PHP
張虎
這是引用符號(hào),引用的意思是:不同的名字訪問同一個(gè)變量內(nèi)容。php的引用(就是在變量或者函數(shù)、對(duì)象等前面加上&符號(hào))。PHP 的引用允許你用兩個(gè)變量來指向同一個(gè)內(nèi)容.<? $a="AB"; $b =&$a; echo $a;//這里輸出:AB echo $b;//這里輸出:AB $b="EF"; echo $a;//這里$a的值變?yōu)镋F 所以輸出EF echo $b;//這里輸出EFG?>
巨木神君
主要用于對(duì)象,也就是一個(gè)類中隊(duì)類內(nèi)部的變量或者函數(shù)進(jìn)行操作;例如:class Mushroom{ public $size; public function __construct($size) { $this->size = $size;//這里使得上面聲明的變量$size等于構(gòu)造函數(shù)傳進(jìn)來的值$size; } public function fun($i){ return $i++; } public function fun2(){ $j = $this->fun(2);//這里$j=3; }}懂了吧!不懂,可以郵件給我!webhappy@126.com
銘紋師
<p>不是php語言引入的,他是html語言中的一個(gè)標(biāo)簽(paragraph,段落的意思),php是服務(wù)器端腳本語言的一種,php代碼經(jīng)服務(wù)器解釋后生成(嵌入)html返回給客戶端瀏覽器,他比html語言要高一級(jí)。HTML翻譯成中文是“超文本標(biāo)記語言”,<>就是他用來識(shí)別/解析元素類型和邊界的標(biāo)記。有一個(gè)W3C標(biāo)準(zhǔn)化組織在約定這方面的規(guī)范,這個(gè)規(guī)范主要是約束瀏覽器開發(fā)者以方便網(wǎng)頁開發(fā)者,要不然張家瀏覽器的<p>代表paragraph,李家的<p>代表page,就亂套了,網(wǎng)頁沒法編了,呵呵~建議你去w3school看一下相關(guān)知識(shí)。參考資料: http://w3school.com.cn/tags/tag_p.asp
夢(mèng)想成真
PHP,一個(gè)嵌套的縮寫名稱,是英文超級(jí)文本預(yù)處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種HTML內(nèi)嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,語言的風(fēng)格有類似于C語言,現(xiàn)在被很多的網(wǎng)站編程人員廣泛的運(yùn)用。PHP 獨(dú)特的語法混合了 C、Java、Perl 以及 PHP 自創(chuàng)新的語法。它可以比 CGI 或者 Perl 更快速的執(zhí)行動(dòng)態(tài)網(wǎng)頁。用PHP做出的動(dòng)態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語言JavaScript相比,PHP在服務(wù)器端執(zhí)行,成分利用了服務(wù)器的性能;PHP執(zhí)行引擎還會(huì)將用戶經(jīng)常訪問的PHP程序駐留在內(nèi)存中,其他用戶在一次訪問這個(gè)程序時(shí)就不需要重新編譯程序了,只要直接執(zhí)行內(nèi)存中的代碼就可以了,這也是PHP高效率的體現(xiàn)之一。PHP具有非常強(qiáng)大的功能,所有的CGI或者JavaScript的功能PHP都能實(shí)現(xiàn),而且支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)。PHP 最初是1994年Rasmus Lerdorf創(chuàng)建的,剛剛開始只是一個(gè)簡(jiǎn)單的用Perl語言編寫的程序,用來統(tǒng)計(jì)他自己網(wǎng)站的訪問者。后來又用C語言重新編寫,包括可以訪問數(shù)據(jù)庫。在1995年以Personal Home Page Tools (PHP Tools) 開始對(duì)外發(fā)表第一個(gè)版本,Lerdorf寫了一些介紹此程序的文檔,并且發(fā)布了PHP1.0。在這早期的版本中,提供了訪客留言本、訪客計(jì)數(shù)器等簡(jiǎn)單的功能。以后越來越多的網(wǎng)站使用了PHP,并且強(qiáng)烈要且增加一些特性,比如循環(huán)語句和數(shù)組變量等等,在新的成員加入開發(fā)行列之后,在1995年中,PHP2.0發(fā)布了。第二版定名為PHP/FI(Form Interpreter)。PHP/FI加入了對(duì)mSQL的支持,從此建立了PHP在動(dòng)態(tài)網(wǎng)頁開發(fā)上的地位。到了1996年底,有15000個(gè)網(wǎng)站使用 PHP/FI;時(shí)間到了1997年中,使用PHP/FI的網(wǎng)站數(shù)字超過五萬個(gè)。而在1997年中,開始了第三版的開發(fā)計(jì)劃,開發(fā)小組加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名為PHP3。2000年,PHP4.0又問世了,其中增加了許多新的特性。
參考資料:http://baike.baidu.com/view/118283.htm
云翼
PHP是一個(gè)基于服務(wù)端來創(chuàng)建動(dòng)態(tài)網(wǎng)站的腳本語言,您可以用PHP和HTML生成網(wǎng)站主頁。當(dāng)一個(gè)訪問者打開主頁時(shí),服務(wù)端便執(zhí)行PHP的命令并將執(zhí)行結(jié)果發(fā)送至訪問者的瀏覽器中,這類似于ASP和CoildFusion,然而PHP和他們不同之處在于PHP開放源碼和跨越平臺(tái),PHP可以運(yùn)行在WINDOWSNT和多種版本的UNIX上。它不需要任何預(yù)先處理而快速反饋結(jié)果,它也不需要mod_perl的調(diào)整來使您的服務(wù)器的內(nèi)存映象減小。PHP消耗的資源較少,當(dāng)PHP作為Apache Web服務(wù)器一部分時(shí),運(yùn)行代碼不需要調(diào)用外部二進(jìn)制程序,服務(wù)器不需要承擔(dān)任何額外的負(fù)擔(dān)。
楊草
HP 使用Berkley的socket庫來創(chuàng)建它的連接。你可以知道socket只不過是一個(gè)數(shù)據(jù)結(jié)構(gòu)。你使用這個(gè)socket數(shù)據(jù)結(jié)構(gòu)去開始一個(gè)客戶端和服務(wù)器之間的會(huì)話。這個(gè)服務(wù)器是一直在監(jiān)聽準(zhǔn)備產(chǎn)生一個(gè)新的會(huì)話。當(dāng)一個(gè)客戶端連接服務(wù)器,它就打開服務(wù)器正在進(jìn)行監(jiān)聽的一個(gè)端口進(jìn)行會(huì)話。這時(shí),服務(wù)器端接受客戶端的連接請(qǐng)求,那么就進(jìn)行一次循環(huán)。現(xiàn)在這個(gè)客戶端就能夠發(fā)送信息到服務(wù)器,服務(wù)器也能發(fā)送信息給客戶端。產(chǎn)生一個(gè)Socket,你需要三個(gè)變量:一個(gè)協(xié)議、一個(gè)socket類型和一個(gè)公共協(xié)議類型。產(chǎn)生一個(gè)socket有三種協(xié)議供選擇,繼續(xù)看下面的內(nèi)容來獲取詳細(xì)的協(xié)議內(nèi)容。定義一個(gè)公共的協(xié)議類型是進(jìn)行連接一個(gè)必不可少的元素。下面的表我們看看有那些公共的協(xié)議類型。表一:協(xié)議名字/常量 描述AF_INET 這是大多數(shù)用來產(chǎn)生socket的協(xié)議,使用TCP或UDP來傳輸,用在IPv4的地址AF_INET6 與上面類似,不過是來用在IPv6的地址AF_UNIX 本地協(xié)議,使用在Unix和Linux系統(tǒng)上,它很少使用,一般都是當(dāng)客戶端和服務(wù)器在同一臺(tái)及其上的時(shí)候使用表二:Socket類型名字/常量 描述SOCK_STREAM 這個(gè)協(xié)議是按照順序的、可靠的、數(shù)據(jù)完整的基于字節(jié)流的連接。這是一個(gè)使用最多的socket類型,這個(gè)socket是使用TCP來進(jìn)行傳輸。SOCK_DGRAM 這個(gè)協(xié)議是無連接的、固定長度的傳輸調(diào)用。該協(xié)議是不可靠的,使用UDP來進(jìn)行它的連接。SOCK_SEQPACKET 這個(gè)協(xié)議是雙線路的、可靠的連接,發(fā)送固定長度的數(shù)據(jù)包進(jìn)行傳輸。必須把這個(gè)包完整的接受才能進(jìn)行讀取。SOCK_RAW 這個(gè)socket類型提供單一的網(wǎng)絡(luò)訪問,這個(gè)socket類型使用ICMP公共協(xié)議。(ping、traceroute使用該協(xié)議)SOCK_RDM 這個(gè)類型是很少使用的,在大部分的操作系統(tǒng)上沒有實(shí)現(xiàn),它是提供給數(shù)據(jù)鏈路層使用,不保證數(shù)據(jù)包的順序表三:公共協(xié)議名字/常量 描述ICMP 互聯(lián)網(wǎng)控制消息協(xié)議,主要使用在網(wǎng)關(guān)和主機(jī)上,用來檢查網(wǎng)絡(luò)狀況和報(bào)告錯(cuò)誤信息UDP 用戶數(shù)據(jù)報(bào)文協(xié)議,它是一個(gè)無連接,不可靠的傳輸協(xié)議TCP 傳輸控制協(xié)議,這是一個(gè)使用最多的可靠的公共協(xié)議,它能保證數(shù)據(jù)包能夠到達(dá)接受者那兒,如果在傳輸過程中發(fā)生錯(cuò)誤,那么它將重新發(fā)送出錯(cuò)數(shù)據(jù)包?,F(xiàn)在你知道了產(chǎn)生一個(gè)socket的三個(gè)元素,那么我們就在php中使用socket_create()函數(shù)來產(chǎn)生一個(gè)socket。這個(gè) socket_create()函數(shù)需要三個(gè)參數(shù):一個(gè)協(xié)議、一個(gè)socket類型、一個(gè)公共協(xié)議。socket_create()函數(shù)運(yùn)行成功返回一個(gè)包含socket的資源類型,如果沒有成功則返回false。Resourece socket_create(int protocol, int socketType, int commonProtocol);現(xiàn)在你產(chǎn)生一個(gè)socket,然后呢?php提供了幾個(gè)操縱socket的函數(shù)。你能夠綁定socket到一個(gè)IP,監(jiān)聽一個(gè)socket的通信,接受一個(gè)socket;現(xiàn)在我們來看一個(gè)例子,了解函數(shù)是如何產(chǎn)生、接受和監(jiān)聽一個(gè)socket。<?php$commonProtocol = getprotobyname(“tcp”);$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);socket_bind($socket, ‘localhost’, 1337);socket_listen($socket);// More socket functionality to come?>上面這個(gè)例子產(chǎn)生一個(gè)你自己的服務(wù)器端。例子第一行,$commonProtocol = getprotobyname(“tcp”);使用公共協(xié)議名字來獲取一個(gè)協(xié)議類型。在這里使用的是TCP公共協(xié)議,如果你想使用UDP或者ICMP協(xié)議,那么你應(yīng)該把getprotobyname() 函數(shù)的參數(shù)改為“udp”或“icmp”。還有一個(gè)可選的辦法是不使用getprotobyname()函數(shù)而是指定SOL_TCP或SOL_UDP在 socket_create()函數(shù)中。$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);例子的第二行是產(chǎn)生一個(gè)socket并且返回一個(gè)socket資源的實(shí)例。在你有了一個(gè)socket資源的實(shí)例以后,你就必須把socket綁定到一個(gè)IP地址和某一個(gè)端口上。socket_bind($socket, ‘localhost’, 1337);在這里你綁定socket到本地計(jì)算機(jī)(127.0.0.1)和綁定socket到你的1337端口。然后你就需要監(jiān)聽所有進(jìn)來的socket連接。socket_listen($socket);在第四行以后,你就需要了解所有的socket函數(shù)和他們的使用。表四:Socket函數(shù)函數(shù)名 描述socket_accept() 接受一個(gè)Socket連接socket_bind() 把socket綁定在一個(gè)IP地址和端口上socket_clear_error() 清除socket的錯(cuò)誤或者最后的錯(cuò)誤代碼socket_close() 關(guān)閉一個(gè)socket資源socket_connect() 開始一個(gè)socket連接socket_create_listen() 在指定端口打開一個(gè)socket監(jiān)聽socket_create_pair() 產(chǎn)生一對(duì)沒有區(qū)別的socket到一個(gè)數(shù)組里socket_create() 產(chǎn)生一個(gè)socket,相當(dāng)于產(chǎn)生一個(gè)socket的數(shù)據(jù)結(jié)構(gòu)socket_get_option() 獲取socket選項(xiàng)socket_getpeername() 獲取遠(yuǎn)程類似主機(jī)的ip地址socket_getsockname() 獲取本地socket的ip地址socket_iovec_add() 添加一個(gè)新的向量到一個(gè)分散/聚合的數(shù)組socket_iovec_alloc() 這個(gè)函數(shù)創(chuàng)建一個(gè)能夠發(fā)送接收讀寫的iovec數(shù)據(jù)結(jié)構(gòu)socket_iovec_delete() 刪除一個(gè)已經(jīng)分配的iovecsocket_iovec_fetch() 返回指定的iovec資源的數(shù)據(jù)socket_iovec_free() 釋放一個(gè)iovec資源socket_iovec_set() 設(shè)置iovec的數(shù)據(jù)新值socket_last_error() 獲取當(dāng)前socket的最后錯(cuò)誤代碼socket_listen() 監(jiān)聽由指定socket的所有連接socket_read() 讀取指定長度的數(shù)據(jù)socket_readv() 讀取從分散/聚合數(shù)組過來的數(shù)據(jù)socket_recv() 從socket里結(jié)束數(shù)據(jù)到緩存socket_recvfrom() 接受數(shù)據(jù)從指定的socket,如果沒有指定則默認(rèn)當(dāng)前socketsocket_recvmsg() 從iovec里接受消息socket_select() 多路選擇socket_send() 這個(gè)函數(shù)發(fā)送數(shù)據(jù)到已連接的socketsocket_sendmsg() 發(fā)送消息到socketsocket_sendto() 發(fā)送消息到指定地址的socketsocket_set_block() 在socket里設(shè)置為塊模式socket_set_nonblock() socket里設(shè)置為非塊模式socket_set_option() 設(shè)置socket選項(xiàng)socket_shutdown() 這個(gè)函數(shù)允許你關(guān)閉讀、寫、或者指定的socketsocket_strerror() 返回指定錯(cuò)誤號(hào)的詳細(xì)錯(cuò)誤socket_write() 寫數(shù)據(jù)到socket緩存socket_writev() 寫數(shù)據(jù)到分散/聚合數(shù)組(注: 函數(shù)介紹刪減了部分原文內(nèi)容,函數(shù)詳細(xì)使用建議參考英文原文,或者參考PHP手冊(cè))以上所有的函數(shù)都是PHP中關(guān)于socket的,使用這些函數(shù),你必須把你的socket打開,如果你沒有打開,請(qǐng)編輯你的php.ini文件,去掉下面這行前面的注釋:extension=php_sockets.dll如果你無法去掉注釋,那么請(qǐng)使用下面的代碼來加載擴(kuò)展庫:<?phpif(!extension_loaded(‘sockets’)){if(strtoupper(substr(PHP_OS, 3)) == “WIN”){dl(‘php_sockets.dll’);}else{dl(‘sockets.so’);}}?>如果你不知道你的socket是否打開,那么你可以使用phpinfo()函數(shù)來確定socket是否打開。你通過查看phpinfo信息了解socket是否打開。如下圖:查看phpinfo()關(guān)于socket的信息◆ 產(chǎn)生一個(gè)服務(wù)器現(xiàn)在我們把第一個(gè)例子進(jìn)行完善。你需要監(jiān)聽一個(gè)指定的socket并且處理用戶的連接。<?php$commonProtocol = getprotobyname("tcp");$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);socket_bind($socket, 'localhost', 1337);socket_listen($socket);// Accept any incoming connections to the server$connection = socket_accept($socket);if($connection){socket_write($connection, "You have connected to the socket.../n/r");}?>你應(yīng)該使用你的命令提示符來運(yùn)行這個(gè)例子。理由是因?yàn)檫@里將產(chǎn)生一個(gè)服務(wù)器,而不是一個(gè)Web頁面。如果你嘗試使用Web瀏覽器來運(yùn)行這個(gè)腳本,那么很有可能它會(huì)超過30秒的限時(shí)。你可以使用下面的代碼來設(shè)置一個(gè)無限的運(yùn)行時(shí)間,但是還是建議使用命令提示符來運(yùn)行。set_time_limit(0);在你的命令提示符中對(duì)這個(gè)腳本進(jìn)行簡(jiǎn)單測(cè)試:Php.exe example01_server.php如果你沒有在系統(tǒng)的環(huán)境變量中設(shè)置php解釋器的路徑,那么你將需要給php.exe指定詳細(xì)的路徑。當(dāng)你運(yùn)行這個(gè)服務(wù)器端的時(shí)候,你能夠通過遠(yuǎn)程登陸(telnet)的方式連接到端口1337來測(cè)試這個(gè)服務(wù)器。如下圖:上面的服務(wù)器端有三個(gè)問題:1. 它不能接受多個(gè)連接。2. 它只完成唯一的一個(gè)命令。3. 你不能通過Web瀏覽器連接這個(gè)服務(wù)器。這個(gè)第一個(gè)問題比較容易解決,你可以使用一個(gè)應(yīng)用程序去每次都連接到服務(wù)器。但是后面的問題是你需要使用一個(gè)Web頁面去連接這個(gè)服務(wù)器,這個(gè)比較困難。你可以讓你的服務(wù)器接受連接,然后些數(shù)據(jù)到客戶端(如果它一定要寫的話),關(guān)閉連接并且等待下一個(gè)連接。在上一個(gè)代碼的基礎(chǔ)上再改進(jìn),產(chǎn)生下面的代碼來做你的新服務(wù)器端:<?php// Set up our socket$commonProtocol = getprotobyname("tcp");$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);socket_bind($socket, 'localhost', 1337);socket_listen($socket);// Initialize the buffer$buffer = "NO DATA";while(true){// Accept any connections coming in on this socket$connection = socket_accept($socket);printf("Socket connected/r/n");// Check to see if there is anything in the bufferif($buffer != ""){printf("Something is in the buffer...sending data.../r/n");socket_write($connection, $buffer . "/r/n");printf("Wrote to socket/r/n");}else{printf("No Data in the buffer/r/n");}// Get the inputwhile($data = socket_read($connection, 1024, PHP_NORMAL_READ)){$buffer = $data;socket_write($connection, "Information Received/r/n");printf("Buffer: " . $buffer . "/r/n");}socket_close($connection);printf("Closed the socket/r/n/r/n");}?>這個(gè)服務(wù)器端要做什么呢?它初始化一個(gè)socket并且打開一個(gè)緩存收發(fā)數(shù)據(jù)。它等待連接,一旦產(chǎn)生一個(gè)連接,它將打印“Socket connected”在服務(wù)器端的屏幕上。這個(gè)服務(wù)器檢查緩沖區(qū),如果緩沖區(qū)里有數(shù)據(jù),它將把數(shù)據(jù)發(fā)送到連接過來的計(jì)算機(jī)。然后它發(fā)送這個(gè)數(shù)據(jù)的接受信息,一旦它接受了信息,就把信息保存到數(shù)據(jù)里,并且讓連接的計(jì)算機(jī)知道這些信息,最后關(guān)閉連接。當(dāng)連接關(guān)閉后,服務(wù)器又開始處理下一次連接。(翻譯的爛,附上原文)This is what the server does. It initializes the socket and the buffer that you use to receiveand send data. Then it waits for a connection. Once a connection is created it prints“Socket connected” to the screen the server is running on. The server then checks to see ifthere is anything in the buffer; if there is, it sends the data to the connected computer.After it sends the data it waits to receive information. Once it receives information it storesit in the data, lets the connected computer know that it has received the information, andthen closes the connection. After the connection is closed, the server starts the wholeprocess again.◆ 產(chǎn)生一個(gè)客戶端處理第二個(gè)問題是很容易的。你需要產(chǎn)生一個(gè)php頁連接一個(gè)socket,發(fā)送一些數(shù)據(jù)進(jìn)它的緩存并處理它。然后你又個(gè)處理后的數(shù)據(jù)在還頓,你能夠發(fā)送你的數(shù)據(jù)到服務(wù)器。在另外一臺(tái)客戶端連接,它將處理那些數(shù)據(jù)。To solve the second problem is very easy. You need to create a PHP page that connects toa socket, receive any data that is in the buffer, and process it. After you have processed thedata in the buffer you can send your data to the server. When another client connects, itwill process the data you sent and the client will send more data back to the server.下面的例子示范了使用socket:<?php// Create the socket and connect$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);$connection = socket_connect($socket,’localhost’, 1337);while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)){if($buffer == “NO DATA”){echo(“<p>NO DATA</p>”);break;}else{// Do something with the data in the bufferecho(“<p>Buffer Data: “ . $buffer . “</p>”);}}echo(“<p>Writing to Socket</p>”);// Write some test data to our socketif(!socket_write($socket, “SOME DATA/r/n”)){echo(“<p>Write failed</p>”);}// Read any response from the socketwhile($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)){echo(“<p>Data sent was: SOME DATA<br> Response was:” . $buffer . “</p>”);}echo(“<p>Done Reading from Socket</p>”);?>這個(gè)例子的代碼演示了客戶端連接到服務(wù)器。客戶端讀取數(shù)據(jù)。如果這是第一時(shí)間到達(dá)這個(gè)循環(huán)的首次連接,這個(gè)服務(wù)器將發(fā)送“NO DATA”返回給客戶端。如果情況發(fā)生了,這個(gè)客戶端在連接之上??蛻舳税l(fā)送它的數(shù)據(jù)到服務(wù)器,數(shù)據(jù)發(fā)送給服務(wù)器,客戶端等待響應(yīng)。一旦接受到響應(yīng),那么它將把響應(yīng)寫到屏幕上。
雷敘
要用到的地方 最多是在拼接 html 字串 或者 sql語句時(shí)
如
<?$html="<table>";for ($i=0; $i<=sizeof($array);$i++){$html.="<tr> <td>".$array[$i][0]."</td>";$html.=" <td>".$array[$i][1]."</td></tr>";}$html.="</table>";echo $html;
冼盈
PHP,即“PHP: Hypertext Preprocessor”,是一種廣泛用于 Open Source(開放源代碼)的尤其適合 Web 開發(fā)并可以嵌入 HTML 的多用途腳本語言。它的語法接近 C,Java 和 Perl,而且容易學(xué)習(xí)。該語言的主要目標(biāo)是讓 Web 開發(fā)人員快速的書寫動(dòng)態(tài)生成的網(wǎng)頁. PHP 代碼是運(yùn)行在服務(wù)端的. 它的使用需要你的服務(wù)器安裝php服務(wù). PHP 能做什么? PHP 能做任何事。PHP 主要是用于服務(wù)端的腳本程序,因此您可以用 PHP 來完成任何其它的 CGI 程序能夠完成的工作,例如收集表單數(shù)據(jù),生成動(dòng)態(tài)網(wǎng)頁,或者發(fā)送/接收 Cookies。但 PHP 的功能遠(yuǎn)不局限于此。 PHP 腳本主要用于以下三個(gè)領(lǐng)域。 服務(wù)端腳本。這是 PHP 最傳統(tǒng),也是最主要的目標(biāo)領(lǐng)域。開展這項(xiàng)工作您需要具備以下三點(diǎn):PHP 解析器(CGI 或者服務(wù)器模塊)、WEB 服務(wù)器和 WEB 瀏覽器。您需要在運(yùn)行 WEB 服務(wù)器時(shí),安裝并配置 PHP,然后,可以用 WEB 瀏覽器來訪問 PHP 程序的輸出,即瀏覽服務(wù)端的 PHP 頁面。請(qǐng)查閱“安裝”一章以獲取信息。 命令行腳本。您可以編寫一段 PHP 腳本,并且不需要任何服務(wù)器或者瀏覽器來運(yùn)行它。通過這種方式,您僅僅只需要 PHP 解析器來執(zhí)行。這種用法對(duì)于依賴 cron(Unix 或者 Linux 環(huán)境)或者 Task Scheduler(Windows 環(huán)境)的日常運(yùn)行的腳本來說是理想的選擇。這些腳本也可以用來處理簡(jiǎn)單的文本。請(qǐng)參閱“PHP 的命令行模式”以獲取信息。 編寫客戶端的 GUI 應(yīng)用程序。對(duì)于基于窗口式的應(yīng)用程序來說,PHP 或許不是一種最好的語言,但是如果您非常精通 PHP,并且希望在您的客戶端應(yīng)用程序中使用 PHP 的一些高級(jí)特性,您可以利用 PHP-GTK 來編寫這些程序。用這種方法,您還可以編寫跨平臺(tái)的應(yīng)用程序。PHP-GTK 是 PHP 的一個(gè)擴(kuò)展,在通常發(fā)布的 PHP 包中并不包含它。如果您對(duì) PHP-GTK 感興趣,請(qǐng)?jiān)L問其網(wǎng)站以獲取信息。 PHP 能夠用在所有的主流操作系統(tǒng)上,包括 Linux、Unix 的各種變種(包括 HP-UX、Solaris 和 OpenBSD)、Microsoft Windows、Mac OS X、RISC OS 等。今天,PHP已經(jīng)支持了大多數(shù)的 WEB 服務(wù)器,包括 Apache、Microsoft Internet Information Server(IIS)、Personal Web Server(PWS)、Netscape 以及 iPlant server、Oreilly Website Pro Server、Caudium、Xitami、OmniHTTPd 等。對(duì)于大多數(shù)的服務(wù)器,PHP 提供了一個(gè)模塊;還有一些 PHP 支持 CGI 標(biāo)準(zhǔn),使得 PHP 能夠作為 CGI 處理器來工作。 綜上所述,使用 PHP,您可以自由地選擇操作系統(tǒng)和 WEB 服務(wù)器。同時(shí),您還可以在開發(fā)時(shí)選擇使用面對(duì)過程和面對(duì)對(duì)象,或者兩者混和的方式來開發(fā)。盡管 PHP 目前的版本還沒有支持 OOP 所有的標(biāo)準(zhǔn),但很多代碼倉庫和大型的應(yīng)用程序(包括 PEAR 庫)僅使用 OOP 代碼來開發(fā)。 使用 PHP,您并不局限于輸出 HTML。PHP 還能被用來動(dòng)態(tài)輸出圖像、PDF 文件甚至 Flash 動(dòng)畫(使用 libswf 和 Ming)。您還能夠非常簡(jiǎn)便的輸出文本,例如 XHTML 以及任何其它形式的 XML 文件。PHP 能夠自動(dòng)生成這些文件,在服務(wù)端開辟出一塊動(dòng)態(tài)內(nèi)容的緩存,可以直接把它們打印出來,或者將它們存儲(chǔ)到文件系統(tǒng)中。 PHP 最強(qiáng)大最顯著的特性之一,是它支持很大范圍的數(shù)據(jù)庫。您會(huì)發(fā)現(xiàn)利用 PHP 編寫數(shù)據(jù)庫支持的網(wǎng)頁簡(jiǎn)單得難以置信。目前,PHP 支持如下數(shù)據(jù)庫: Adabas D Ingres Oracle (OCI7 and OCI8) dBase InterBase Ovrimos Empress FrontBase PostgreSQL FilePro (read-only) mSQL Solid Hyperwave Direct MS-SQL Sybase IBM DB2 MySQL Velocis Informix ODBC Unix dbm 我們同時(shí)還有一個(gè) DBX 擴(kuò)展庫使得您可以自由的使用該擴(kuò)展庫支持的任何數(shù)據(jù)庫。另外,PHP 還支持 ODBC,即 Open Database Connection Standard(開放數(shù)據(jù)庫連接標(biāo)準(zhǔn)),因此您可以連接任何其它支持該世界標(biāo)準(zhǔn)的數(shù)據(jù)庫。 PHP 還支持利用諸如 LDAP、IMAP、SNMP、NNTP、POP3、HTTP、COM(Windows 環(huán)境)等不計(jì)其數(shù)的協(xié)議的服務(wù)。您還可以開放原始網(wǎng)絡(luò)端口,使得任何其它的協(xié)議能夠協(xié)同工作。PHP 支持和所有 WEB 開發(fā)語言之間的 WDDX 復(fù)雜數(shù)據(jù)交換。關(guān)于相互連接,PHP 已經(jīng)支持了對(duì) Java 對(duì)象的即時(shí)連接,并且可以將他們自由的用作 PHP 對(duì)象。您甚至可以用我們的 CORBA 擴(kuò)展庫來訪問遠(yuǎn)程對(duì)象。 PHP 具有極其有效的文本處理特性,支持從 POSIX 擴(kuò)展或者 Perl 正則表達(dá)式到 XML 文檔解析。為了解析和訪問 XML 文檔,我們支持了 SAX 和 DOM 標(biāo)準(zhǔn)。您可以使用我們的 XSLT 擴(kuò)展庫來轉(zhuǎn)換 XML 文檔。 如果您將 PHP 用于電子商務(wù)領(lǐng)域,您會(huì)發(fā)現(xiàn)其 Cybercash payment、CyberMUT、VeriSign Payflow Pro 以及 CCVS 函數(shù)對(duì)于您的在線交易程序來所是非常有用的。參考資料:版權(quán) © 1997, 1998, 1999, 2000, 2001, 2002, 2003 PHP 文檔小組