亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1899 | 回復(fù): 0
打印 上一主題 下一主題

您了解 PHP 嗎? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-01-20 19:22 |只看該作者 |倒序?yàn)g覽

  您了解 PHP 嗎?
作者:Rasmus Lerdorf
  PHP 的創(chuàng)始人講述了他對(duì) PHP 現(xiàn)象、如何形成和推動(dòng)了這種語言的發(fā)展、以及 PHP 的發(fā)展方向的看法
[color="DarkRed"][color="SlateGray"]
您了解 PHP 嗎?
  
 
 
  作者信息:Rasmus Lerdorf()PHP 的創(chuàng)始人
  文章信息:初級(jí) 初發(fā)日期:2004 09 關(guān)鍵字:PHP
  來源鏈接:http://www.troyoo.com
 
  摘要:
  PHP 的創(chuàng)始人講述了他對(duì) PHP 現(xiàn)象、如何形成和推動(dòng)了這種語言的發(fā)展、以及 PHP 的發(fā)展方向的看法
 
 
   
 
        
  PHP 漫游者指南
 
 
  您了解 PHP 嗎?
  作者:Rasmus Lerdorf
 
  PHP 的創(chuàng)始人講述了他對(duì) PHP 現(xiàn)象、如何形成和推動(dòng)了這種語言的發(fā)展、以及 PHP 的發(fā)展方向的看法
 
  PHP 無處不在。在其 2004 年 2 月的 Web 服務(wù)器調(diào)查中,Netcraft [www.netcraft.com] 調(diào)查了 47,173,415 個(gè)域,并發(fā)現(xiàn) 15,205,474 個(gè)已經(jīng)安裝了 PHP。這大約為 Web 上所有域的 32%,并且這種增長勢頭沒有減緩的跡象。
 
      
 
 
  PHP 的初期
 
  我在大約 10 年前開始開發(fā) PHP。那時(shí)在名詞“開放源代碼”出現(xiàn)且 GPL 和自由軟件廣為人知之前很久。正如許多已經(jīng)變得流行的開放源代碼項(xiàng)目一樣,動(dòng)機(jī)決不是哲學(xué)上的或者甚至是自我陶醉。它純粹是因?yàn)樾枰环N工具來解決現(xiàn)實(shí)中 與 Web 相關(guān)的問題。在 1994 年,當(dāng)提到 Web 開發(fā)工具時(shí),選擇相當(dāng)有限。我發(fā)現(xiàn)當(dāng)我自己在用 C 或 Perl 為 Web 站點(diǎn)編寫動(dòng)態(tài)組件時(shí),從一個(gè)問題到另一個(gè)問題的代碼重疊現(xiàn)象十分顯著。出于性能的考慮,我越來越遠(yuǎn)離 Perl,而傾向于 C,因?yàn)楸仨殞?Perl 作為一個(gè)單獨(dú)的 CGI 運(yùn)行的 fork+exec 開銷限制性太強(qiáng)了。
 
  PHP 最早的未發(fā)布版本主要是常用 C 函數(shù)的一個(gè) C 資料庫,我編寫了這些 C 函數(shù),以便能夠容易地從一個(gè)開放源代碼項(xiàng)目到另一個(gè)開放源代碼項(xiàng)目進(jìn)行重用。我有一個(gè)簡單的狀態(tài)機(jī)驅(qū)動(dòng)的分析器,它從 HTML 文件中挑出標(biāo)記,然后調(diào)用我編寫的后端 C 函數(shù)。這些代碼最初是作為一個(gè)稱為個(gè)人主頁工具 (Personal Home Page Tools) 的程序包公開發(fā)布的,這個(gè)程序包中的每個(gè)工具都是關(guān)于如何使用系統(tǒng)來解決關(guān)于個(gè)人主頁的常見問題的一個(gè)例子。在之后的某段時(shí)間,我從中分出了一部分工具并 把它稱為 FI,代表表單解釋程序 (Form Interpreter)。FI 幕后的想法是,當(dāng)您接收到一個(gè)表單提交的結(jié)果時(shí),您需要做一些常見的事情,而它能夠處理所有這些事情。一些早期的例子:
 
   
   
    Hey, you are using Netscape!
   
 
   
 
   
    Sorry, that record does not exist
   
 
    Welcome !
    You have  credits left in your account.
 
   
 
  我的 FI 的分析器非常糟糕,這促使我試著去編寫一個(gè)更好的分析器。我拋棄了  語法,而改用 ,重新將 Personal Home Page Tools 的某些部分和這個(gè)新的 FI 工具結(jié)合起來,并在 1995 年底將它作為一個(gè)名稱為 PHP/FI ㄕ飧雒?樸械惆肟?嫘π災(zāi)實(shí)嗇7鋁?TCP/IP)的程序包對(duì)外發(fā)布。PHP/FI 在接下來的幾年里正好和 Web 一起得到了發(fā)展。在 1997 年,兩個(gè)正使用 PHP/FI 的以色列人 Zeev Suraski 和 Andi Gutmans 問我是否有興趣使用一個(gè)新的分析引擎,他們將為下一個(gè)版本的 PHP 編寫這個(gè)引擎。我召集了其它一些一直在為 PHP/FI 提供補(bǔ)丁和代碼的人,我們共同協(xié)作在 1998 年中期發(fā)布了 PHP 第 3 版。這可能是 PHP 發(fā)展期間最關(guān)鍵的時(shí)刻。如果這個(gè)項(xiàng)目一直是一個(gè)人在努力,那么當(dāng)時(shí)它可能已經(jīng)失敗了,如果一群剛剛組合在一起的陌生人弄不清楚如何朝著一個(gè)共同的目標(biāo)去努 力,那么這個(gè)項(xiàng)目也可能很容易就失敗了。無論怎樣,我們?cè)O(shè)法解決了我們以自我為中心的問題和其它的個(gè)人問題,這個(gè)項(xiàng)目成長了起來。為這個(gè)項(xiàng)目做出貢獻(xiàn)的人 的數(shù)量在穩(wěn)定地增長,現(xiàn)在我們打算在 2004 年上半年的某個(gè)時(shí)候推出 PHP 5.0 版本。
 
  編程語言中的“丑小鴨”
 
  關(guān)于 PHP 的流行觀點(diǎn)可以分為兩個(gè)極端。語言純化論者往往不喜歡許多有點(diǎn)隨意的特性實(shí)施和這些年來出現(xiàn)的一些前后不一致的地方。同時(shí),實(shí)際問題的解決者往往喜歡 PHP 似乎已經(jīng)讀懂您的意圖,并表現(xiàn)出它就是理想的 Web 問題解決工具。
 
  在使純化論者抓狂的事情中有:函數(shù)名稱不區(qū)分大小寫但變量名稱區(qū)分大小寫;內(nèi)置函數(shù)的名稱前后不一致;沒有強(qiáng)制 PHP 開發(fā)人員使用任何真正的結(jié)構(gòu),從而使得很容易寫出凌亂的代碼。實(shí)際上我不得不同意這些批評(píng)意見,但我至少可以試著解釋一下我們?nèi)绾我约盀槭裁吹搅诉@種狀 態(tài)。
 
  首先,關(guān)于函數(shù)名區(qū)分大小寫的問題:這可以回溯到最早的 PHP 版本。在 Web 的早期(XHTML 之前很久),所有的 HTML 標(biāo)記標(biāo)簽都是大寫的是很常見的。但因?yàn)檫@些標(biāo)簽是不區(qū)分大小寫的,所以人們?cè)谶@上面并不是非常一致。我希望人們對(duì)待具體的 PHP 標(biāo)簽基本就像和對(duì)待其它的標(biāo)記標(biāo)簽一樣,這意味著 PHP 的標(biāo)簽也將是不區(qū)分大小寫的。當(dāng) PHP 變得更加高級(jí)并且擁有了如變量之類的特性時(shí),使這些新的特性區(qū)分大小寫并沒有什么害處,因?yàn)樗鼪]有破壞對(duì)已有的 PHP 頁面的向后兼容性;剡^頭去,突然處理最初的簡單標(biāo)簽(這些標(biāo)簽實(shí)質(zhì)上只是函數(shù)調(diào)用)時(shí),區(qū)分大小寫將破壞那些頁面,并使它們?cè)诟碌?PHP 版本中不可用。無論如何,人們不應(yīng)該擁有只是名稱大小寫不同的函數(shù)。盡管如此,回想起來,當(dāng)相對(duì)少的人在使用 PHP 時(shí),盡早地打破向后兼容性是個(gè)好主意;但在那時(shí),沒有人預(yù)料到 PHP 的驚人成長。
 
  至于函數(shù)命名本身,我往往是從我熟悉的其它語言和 API 借鑒一些想法。這意味著 PHP 擁有諸如 strlen() 和 substr() 之類的函數(shù),它們?nèi)绻麑懗?str_len() 或 sub_str(),那看起來將有點(diǎn)可笑。我增加了如 stripslashes() 之類的函數(shù),這些函數(shù)由于長度的原因常常被寫為 StripSlashes(),以使其更易于讀懂。同時(shí),我模仿了底層的數(shù)據(jù)庫 API,諸如函數(shù) msql_connect() — miniSQL 是第一個(gè)被 PHP 支持的數(shù)據(jù)庫 — 它們可使用下劃線命名。熟悉這些不同來源的人將非常熟悉 PHP 中的命名。當(dāng) PHP 作為 Web 服務(wù)器和您想要掛在 Web 服務(wù)器上的所有不同后端工具之間的一個(gè)接口時(shí),它并不是這樣一種獨(dú)立的語言。因此,今天當(dāng)人們看到 PHP 作為一種獨(dú)立的語言,而沒有考慮其前后關(guān)系的時(shí)候,它可能看起來有點(diǎn)前后不一致。
 
    PHP 資源
 
  PHP Web 站點(diǎn)
  PHP 文檔
  PHP 代碼庫
  PHP 擴(kuò)展
   
 
  關(guān)于缺少強(qiáng)制的結(jié)構(gòu),我能說的是,我絕對(duì)痛恨使我限制在解決問題的某種特定方法上的編程框架。這不意味著我不相信結(jié)構(gòu)和框架,但我的確相信人們能夠提出他們自己的、與他們的環(huán)境相稱的方法。在本文稍后我論述各種 PHP 項(xiàng)目的可能體系結(jié)構(gòu)時(shí),將更多地涉及這個(gè)問題。
 
  所有這些歸結(jié)為 PHP 從來不打算去贏得任何“選美比賽”。它的目的不是要引入任何新的革命性的編程范例。它的目的是解決單個(gè)問題:Web 問題。這種問題可能會(huì)相當(dāng)難看,有時(shí)您需要一種難看的工具來解決難看的問題。實(shí)際上,雖然一種漂亮的工具也可能解決問題,但常常一種難看的 PHP 解決方案能夠更快速地得到實(shí)施,并且使用更少的資源。這大概總結(jié)了這些年來 PHP 的固執(zhí)的“功能優(yōu)于形式”的方法。
 
 
 
 
   您了解 PHP 嗎?  第 2 頁
  給設(shè)計(jì)師的建議
 
  PHP 的最流行的部署模式是將它直接和預(yù)先分支的多進(jìn)程 Apache 1.3.x Web 服務(wù)器連接起來。和使用 Java 不同的是,不存在獨(dú)立的過程(如 JVM)。PHP 類似于如 Perl 和 Python 之類的腳本語言,在這些腳本語言中,直接分析和執(zhí)行腳本。
 
  沒有中央控制過程是一個(gè)特色,同時(shí)也是給許多人帶來極大挫折的原因。PHP 不共享任何體系結(jié)構(gòu) — 其中每條請(qǐng)求都完全不同并且可以同其它任何請(qǐng)求分開 — 使這種語言本身具有無限的平行可伸縮性。PHP 鼓勵(lì)您把可伸縮性問題放到需要它的層次上去。如果您需要共享的數(shù)據(jù)存儲(chǔ),那么就使用一個(gè)支持復(fù)制和能夠擴(kuò)展到您需要的層次上的數(shù)據(jù)庫。如果您需要負(fù)載均衡 請(qǐng)求或?qū)⑻囟ǖ恼?qǐng)求分配到特定的服務(wù)器上,那么就使用一個(gè)支持這種功能的前端負(fù)載均衡器。通過消除中央控制過程,PHP 避免了成為系統(tǒng)中的瓶頸。這是使 PHP 區(qū)分于人們通常稱之為應(yīng)用服務(wù)器的工具的判定特性。
 
    
 
 
  用于高端 PHP 部署的一個(gè)非常常見的體系結(jié)構(gòu)
 
  在上圖中,一個(gè)或更多的負(fù)載均衡器將進(jìn)入的請(qǐng)求分配在任意數(shù)量的 Web 服務(wù)器上?紤]到數(shù)據(jù)存儲(chǔ),您可能在每個(gè) Web 服務(wù)器上部署一個(gè)只讀的數(shù)據(jù)庫拷貝(如果數(shù)據(jù)集足夠小,允許您那么做的話),或者您可能創(chuàng)建一個(gè)單獨(dú)的數(shù)據(jù)庫服務(wù)器樹來處理各種類型的請(qǐng)求。
 
  增加結(jié)構(gòu)
 
  PHP 超過其它許多針對(duì)解決 Web 問題的工具的巨大優(yōu)勢之一是,其它的工具往往把這種非常具體的目標(biāo)問題的解決和從結(jié)構(gòu)上控制用戶解決問題的方式的要求聯(lián)系在一起。PHP 不強(qiáng)制使用任何這種結(jié)構(gòu),相反選擇專注于使問題的各個(gè)單獨(dú)的功能方面盡可能地易于使用。例如,PHP 提供目的性非常強(qiáng)的函數(shù)來與后端數(shù)據(jù)庫通信。這些函數(shù)是各個(gè)數(shù)據(jù)庫專用的,并且不犧牲任何性能來獲取和其它后端數(shù)據(jù)庫的統(tǒng)一性或一致性。在文件布局方面, 也沒有規(guī)定的方法來構(gòu)建 PHP 應(yīng)用程序的結(jié)構(gòu)。
 
  PHP 不強(qiáng)制使用結(jié)構(gòu)的事實(shí)并不意味著您不應(yīng)該以一種井然有序和結(jié)構(gòu)化的方式來構(gòu)建 PHP 應(yīng)用程序。當(dāng)人們問我將如何著手構(gòu)建一個(gè)大型 PHP 應(yīng)用程序的結(jié)構(gòu)時(shí),我喜歡向他們展示下面這種方法。
 
     +--------------------------------+
     |     HTML TEMPLATES             |
     |     $DOC_ROOT/*.php            |
     +--------------------------------+
     |     TEMPLATE HELPERS           |
     |     $DOC_ROOT/*.inc            |
     +--------------------------------+
     |     BUSINESS LOGIC             |
     |     /usr/local/php/*.inc       |
     +--------------------------------+
     |     C/C++ CORE CODE            |
     |     /usr/local/lib/php/*.so    |
     +--------------------------------+
 
  這個(gè)分四個(gè)層次的方法解決了一些問題。首先,它將一個(gè)典型項(xiàng)目中的內(nèi)容沿著職責(zé)的線索分開。Web 前端開發(fā)人員從頂層進(jìn)行工作,后端工程師從底層進(jìn)行工作。他們?cè)谀0逯謱佑幸稽c(diǎn)交疊。它還分開了包含 HTML 的任何文件,將它們放到 document_root 中,而將不包含 HTML 的任何文件放到 document_root 外。
 
    PHP 提示和技巧
 
  1. 當(dāng)您在尋找關(guān)于某個(gè)具體的 PHP 函數(shù)的信息時(shí),請(qǐng)轉(zhuǎn)至 http://php.net/ 。例如:http://php.net/join。這將直接把您帶到您地理位置附近的一臺(tái)服務(wù)器上的聯(lián)機(jī)手冊(cè)中的正確位置上。
 
  2. 試試這個(gè):pear install apc 。pear 命令是一個(gè)有用的安裝程序,它甚至可以用來安裝用 C 編寫的 PHP 擴(kuò)展。在這種情況下,它將安裝 APC opcode 高速緩存擴(kuò)展。
 
  3. 使用 opcode 高速緩存來提高性能。參見 #2。
 
  4. 在 PHP 中混合 OOP 和過程代碼不存在任何錯(cuò)誤。在對(duì)象有意義的時(shí)候使用對(duì)象,其余情況轉(zhuǎn)用過程。
 
  5. 用您自己定制的 C 或 C++ 擴(kuò)展來擴(kuò)展 PHP 比您想象的要更容易。參見 PHP 源代碼版本中的 README.EXT_SKEL。
 
  6. echo


本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/600/showart_10396.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP