PHP
PHP(全部講:PHP:HypertextPreprocessor,就係「PHP:超文字預處理器」)係一種開源个通用電腦手稿語言,尤其使得用在網路開發乜使得嵌入去 HTML 當中使用。PHP 个語法借鑑吸收 C 語言、Java 摎 Perl 等流行電腦語言个特點,容易在一般程式設計師學習。PHP 个主要目標係愛分網路開發人員快速編寫動態頁面,毋過 PHP 乜分人用於其他當多領域。
PHP 最初係由勒多夫在一九九五年開始開發个;這下 PHP 个標準由 the PHP Group 維護。PHP 以 PHP License 作為許可協定,毋過因為該協定限制了 PHP 名稱个使用,故所摎開放原始碼許可協定 GPL 無相容。
PHP 个應用範圍非常个闊,尤其係在網頁程式个開發上。一般來講 PHP 大部分執行在網頁伺服器頂項,通過執行 PHP 程式碼來產生使用者看著个網頁。PHP 做得在大部分个伺服器摎作業系統頂高執行。照二零一三年四月仔个統計資料,PHP既經分人安裝在超過兩億四千四百萬隻網站摎兩百一十萬臺伺服器頂。
PHP 在 Windows 有專門个官方移植編譯專案,還過分幾下隻 VC 編譯器个版本同執行緒安全特性來提供無共樣个版本支援。
根據 W 三 Techs 个報告,截至二零二一年九月份:「 有百分之七十八pa24九个網站來使用 PHP。」
開發歷史
_ PHP _ 本來簡單个安到 Personal Home Page,係拉斯姆斯 ・ 勒多夫為著愛維護個人个網頁,用 C 語言開發个一兜 CGI 工具程式集,來取代原先使用个 Perl 程式。正開始這兜工具程式用來顯示拉斯姆斯 ・ 勒多夫个個人履歷,摎統計網頁流量。佢將這兜程式摎一兜表單直譯器整合起來,安到 PHP / FI。PHP / FI 做得摎資料庫連接,產生簡單个動態網頁程式。拉斯姆斯 ・ 勒多夫在一九九五年六月初八將 PHP / FI 公開放出,希望做得透過社群來加速程式開發同尋毋著尋毋著个所在。這個釋出个版本安做 PHP 二,已經有今晡日 PHP 一息仔雛型,像係恁仔啦 Perl 个變數命名方式、表單處理个功能、擱有嵌入到位 HTML 中執行个能力。程式語法上乜當像 Perl,有較多个限制,毋過還較簡單、還較有彈性。
在一九九七年,在額 Technion IIT 𠊎司个兩個以色列程式設計師:Zeev Suraski 摎 Andi Gutmans,寫過吔 PHP 个破析器,成為 PHP 三个基礎,還過 PHP 也在這個時節改喊做 _ PHP : Hypertext Preprocessor _ .。經過幾下隻月測試,開發團隊在一九九七年十一月釋出了 PHP / FI 二,跈等就開始 PHP 三个開放測試,盡尾在一九九八年六月正式放出來 PHP 三。Zeev Suraski 摎 Andi Gutmans 在 PHP 三釋出過後開始改寫 PHP 个核心,這個在一九九年放出个破析器安到 ZendEngine,佢兜乜在以色列个 Ramat Gan 成立吔 Zend Technologies 來管理 PHP 个開發。
在二零零年五月二十二號,以 Zend Engine 一千擔百空為基礎个 PHP 四正式放出來,二零零四年七月十三號會放出了 PHP 五,PHP 五係用了第二代个 Zend Engine。PHP 五包含了當多新特色,像係強化个物件導向功能、引入 PDO(PHP Data Objects,一個存取資料庫个延伸函式庫)、 還有當多效能上个增強。目前嗬 PHP 四既經毋會繼續更新,來鼓勵使用者轉徙到 PHP 五。
二零零八年該當時,PHP 五成為著 PHP 唯一維護中个穩定版本。
PHP 七个第一隻版本在二零一五年十二月初三開發完成,包含了大量效能上个改進, 同時乜帶來一息新个特性,值得關心个係轉回值類型聲明、純量類型个聲明(做得用在參數還有轉值)。
版本歷程
吉祥物
PHP 計畫个吉祥物名安到「elePHPant」,PHP 个 logo 在一隻藍象个裡肚,由文森 ・ 龐蒂爾 ( Vincent Pontier ) 在一九九八年設計。設計概念係在側片看 PHP 像一隻大象。當 elePHPant 分人製作做毛絨玩具个時節,有時色會有無共樣。
應用
PHP 係一個應用範圍盡闊个語言,特別係在網路程式開發方面。一般來講 PHP 大體都在伺服器執行,透過執行 PHP 个程式碼來產生網頁提供瀏覽器讀取,另外也做得用來開發命令列指令碼程式摎使用者端个 GUI 應用程式。PHP 做得在盡多个無共樣種个伺服器、作業系統、平台項執行,也做得摎當多資料庫系統結合。使用 PHP 毋使任何費用,官方組織 PHP Group 提供吔完整个程式原始碼,做得分使用者修改、編譯、擴大來使用。
安全
根據 National Vulnerability Database 資料顯示,摎 PHP 有關个資料庫攻擊比例係:百分之二十二千空四 , 百分之二十八二千空五 , 百分之四十三二千空六 , 百分之三十六二千空七 , 百分之三十五二千空八 and百分之三十二二千空九。其中盡多个漏空都做得通過遠端操作完成,像係:駭客做得通過網路連接攻擊伺服器,達到盜取抑係裝壞忒資料,傳送垃圾郵件或者進行分散式阻斷服務攻擊。毋過跈等過較多个關注,PHP乜變啊緊來緊安全吔。
PHP 官網分人駭入事件
二零一零年十二月十七,PHP 代碼「貢獻者个名單」中分人加入「Wolegequ Gelivable」字樣(中文含義「𠊎勒斯去分力」), 差毋多半點鐘過後分人刪除。二零一一年三月十九號,PHP 官方表示聲明指出,駭客可能係通過 wiki . php . net 做為入口攻擊了代碼系統。還過,官方已經經過檢查過自家个版本五千五百七十三 . 五以來放出个代碼,並無發現惡意个內容。毋過官方同時表示,還吂完全掌扼駭客發動這擺攻擊个實際細節。
語法
PHP 个語法參考了 Perl、C 語言, 還過做得整合在 HTML 當中,以下係一個簡單个 Hello World 程式碼:
PHP 引擎單淨分析< ? php到? >之間个程式碼,毋包含在< ? php到? >之間个內容會直接送出,所以做得用用這用下个方式來將 PHP 程式碼嵌入在 HTML 當中:
在 HTML 中嵌入來 PHP 時,比論需要單獨輸出某一隻變數,除忒正常採用 echo 方式外,也做得直接採用下列个方式:
但是上述這種方式識引起爭議,有个人並無推薦這種方式个縮寫(原因係恁樣:並毋係所有伺服器都支援縮寫,毋過在後期過後這選項係預設打開來), 也有人因為採用這種方法,造成同 XML 搣毋著个情形。
在判斷語句裡背个 HTML 代碼並毋會分直接送出:
PHP 做得用三種註解个形式:C 摎 C + + 所使用个「/ \ * . . . \ * /」摎「/ /」,摎 Perl 个「#」。
類型
PHP 主要有八種基本資料類型,其中包含:
- 四種變數个類型
- 整數型(integer)* 浮點數型(float)
- 布林型(boolean)
- 字串(string)
- 兩種複合類型
- 陣列(array)
- 物件(object)
- 兩種特殊類型
- NULL
- 資源(resource)
變數
PHP 中,變數以「$」後接變數名稱來表示。變數名稱區分大小寫。
有效个變數名稱以字母抑係底線開頭,後接任意數目个字母、數字抑係底線,PHP 也支援使用當多位元組文字準做變數名。
物件个導向
PHP 從 PHP 三開始有吔基本个物件導向(Object oriented)个特性,毋過一直到 PHP 五同物件導向部分重新改寫過後,PHP 个物件導向功能正較完善。這下 PHP 做得講係一個有完整个物件導向功能个語言。
PHP 相關資源
PHP 架構
使用 PHP 架構做得還較遽還較簡單个部署專案還過提高開發效率,毋過學習使用這兜架構需要付出另外个學習成本。
盡時行个啦 PHP 架構包含:Symfony, Zend Framework , Laravel、Phalcon、CodeIgniter、Yii、ThinkPHP 等一下。
函式庫
內建多樣化个函式係 PHP 主愛个其中一個特點,這兜開放程式碼个函式提供了各種無共樣个功能,像係檔案處理、FTP、字串處理、等一下。這兜函式个使用方法摎 C 語言相當个(比將講 printf), 這乜係 PHP 時行起來因為之一。
除忒內建个函式以外,PHP 也提供吔盡多个延伸函式庫(extension), 像係各種資料庫連接函式、資料壓縮函式、圖形處理這兜。有兜延伸函式庫需要從 PECL(PHP Extension Community Library)取得。
以下係PHP程式語言提供个函式庫列表
原始碼編碼摎加速
PHP 原始碼係做得直接讀書个,就算放到伺服器頂項執行啊乜係共樣。雖然講讓 PHP 多了彈性,毋過相對个會造成安全危機同效能降下來个問題。
透過 PHP 編碼器,做得保護 PHP 个原始碼毋分人讀書(對商業軟體來講特別有需求), 也可以提昇執行个效能。當多公司抑係團體開發 PHP 个編碼器,將 PHP 程式編譯成位元組碼(byte code), 再透過伺服器頂項安裝對應个程式來執行 PHP 指令碼。除了透過編碼器加速以外,PHP 還做得透過動態个快取機制來提昇速度,加速工具有商業版个,比將講 Zend Platform,乜有開放原始碼个加速軟體像 eAccelerator、APC、XCache。
php 包管理器
Composer 好 php 社群用來管理依賴關係个工具,一般在 php 專案中通過 composer . json 聲明依賴个外部 php 庫,過仔就做得用 Composer 管理包依賴。
PHP 編譯器
PHP 一直分人準做直譯器使用。PHP 編譯器會將 PHP 從直翻譯器中分離,為著加強運行摎改善同用其他程式語言編寫部份个互通性,比將講 Phalanger 將 PHP 編譯成通用中間語言同 Hiphop for PHP 摎 PHP 原始碼編譯變作 C + + 等。Facebook 因應厥个網站大量个使用者,整合吔 HPHPc、HPHPi、HPHPd 還有 HHVM 這四種指令碼引擎,開發出 HipHop for PHP,來加強網站效能。
發展=====PHP 七=
- 因為 PHPNG 專案(PHP Next-Gen), 佢做得透明提升 PHP 程式效能,使 PHP 七个效能同 HHVM 相當
- JIT 引擎
- 抽象語法樹編譯 AST : Abstract Syntax Tree
- 非同步編程
彩卵
PHP 有幾下隻彩卵,做得透過在網域名仔个後背加上特殊字串顯示彩卵。比將講,` ?=PHPE 九千五百六十八 F 三十六 -D 四百二十八八pa24十一 d 二 -A 七百六十九pa24 AA 一 ACF 四十二啦 ` 會出現 PHP 个 logo,PHP 版本个無共樣,logo 也會無共樣啦;毋過啊這個特性既經在五千五百五十版本當中分人徙除。
趣聞
PHP 程式語言个官方文件當中識寫過「PHP 係盡好个 WEB 開發語言,該其他个語言仰仔呢?」,但係這句話分華語圈个程式設計師謠傳為「世界項最好个語言」還過加講話。
註釋
參考文獻
參照
來源
網頁
- PHP 手冊
- 函式參考
外部連結
- 官方網站
- 開放式目錄計畫當中摎 PHP 相關个內容
- PHP wiki
- PHP 參考手冊
- CentOS 下安裝 PHP 七
- Rocky Linux 八安裝多隻 PHP版本