PHP

PHP（PHP：Hypertext Preprocessor）是一種徠電腦裏執行嗰腳本語言，主要用來處理動態網頁，也包含命令列執行嗰介面（command line interface），或者產生圖形使用者介面（GUI）嗰程式。

PHP頂早是Rasmus Lerdorf徠1995年朞發明嗰，到昶朞PHP嗰標準䜒PHP Group搭開放原始碼社群維護。PHP用PHP License做許可協議，不過箇協議限牢用PHP名稱，怪得搭開放原始碼嗰許可協議GPL不合。

PHP嗰應用範圍猴大，特別徠網頁程式嗰開發裏。一般來講PHP都徠網頁嗰伺服器裏執行，通過執行PHP程式碼先畀用戶要流覽嗰網頁做起。PHP好徠蠻多嗰伺服器搭作業系統裏執行，再加之PHP白用甮鈔票。根據2007年4月嗰統計資料，PHP有鉸得2000多萬嗰網站搭100萬部伺服器裏。

 開發歷史 

PHP起頭是Personal Home Page箇省講php.net/history，是Rasmus Lerdorf為了維護個人網頁，用c語言開發箇一許CGI工具程式集，代箇原來用嗰Perl程式。頂早許工具程式馱來顯示Rasmus Lerdorf嗰個人履歷，還有統計網頁嗰流量。後晚朞渠畀許程式搭一許表單直譯器整合起，名字PHP/FI。PHP/FI搭資料庫好連接，生成省力嗰動態網頁程式。Rasmus Lerdorf徠1995年6月8號畀PHP/FI放出，希望通過社群快丁開發程式搭尋賺嗰蕩地。當時箇版本是PHP 2，有昶嗰PHP嗰範子爻，像類似Perl嗰變數命名方式、表單處理功能、還有嵌進HTML裏執行嗰能力。程式語法也狀Perl嗰範，有蠻多限制，不過還簡單、還有彈性。

1997年朞，徠Technion IIT公司嗰兩箇以色列程式設計師：Zeev Suraski搭Andi Gutmans，畀PHP嗰剖析器轉寫爻，成了PHP 3嗰基礎，哈PHP也徠箇時候改起䜒PHP: Hypertext Preprocessor.。通過一兩嗰月頭嗰測試，開發團隊徠1997年11月馱出PHP/FI 2，隨腳便開始PHP 3嗰開放測試，到後晚徠1998年6月正式放出PHP 3。Zeev Suraski搭Andi Gutmans徠PHP 3放出後開改PHP嗰核心，箇徠1999年放出嗰剖析器名字Zend Engine，渠伊也徠以色列嗰Ramat Gan成立Zend Technologies來管PHP嗰開發。

2000年5月22號，以Zend Engine 1.0作基礎嗰PHP 4正式推出，2004年7月13號推出PHP 5，PHP 5是用第二代嗰Zend Engine。PHP 5有無數新嗰特色，同強化嗰物件導向功能、引入PDO（PHP Data Objects，一箇存取資料庫嗰延伸函式庫）、還有無數效能嗰加強。昶PHP 4不再更新爻，為了鼓勵用戶轉去PHP 5。

2008年PHP 5成了PHP唯一維護當中嗰穩定版本。轉日嗰PHP 5.3會加進Late static binding搭別樣一許功能嗰強化。

PHP 6嗰開發也徠塝進行當中，主要嗰改進有移除register_globals、magic quotes和Safe mode嗰功能。

 版本歷程 
 代表意義 紅色 舊版；官方停止支援 黃色 舊版；官方維護當中 綠色 昶嗰版本 藍色 轉日版本
 主要版本  次要版本  推出日期  說明1.0 1.0.01995年6月8號正式名稱為"Personal Home Page Tools (PHP Tools)"，第一筏用"PHP"箇名字。2.0 2.0.01996年4月16號PHP 1.0箇改進版，速度還快、體積還細，產生動態網頁還省力。3.0 3.0.01998年6月6號開發方式改成多人做隊參與。Zeev Suraski和Andi Gutmans為了箇版，剖析引擎轉寫過。4.0 4.0.02000年5月22號改成用Zend引擎當剖析器，有兩階段剖析/標籤剖析系統等先進嗰功能。 4.1.02001年12月10號加進"超全域變數"（superglobals）功能，包含$_GET、$_POST、$_SESSION等 4.2.02002年4月22號預設取消register_globals功能。從網路接收嗰資料弗設定成全域變數，增加程式嗰安全性。 4.3.02002年12月27號加進命令列執行檔，名字CLI。 4.4.02005年7月11號Added man pages for phpize and php-config scripts. 4.4.82008年1月3號Several security enhancements and bug fixes. Was to be the end of life release for PHP 4. Security updates only until 2008-08-08, if necessary.PHP: PHP 4.4.8 Release Announcement 4.4.92008年8月7號More security enhancements and bug fixes. The last release of the PHP 4.4 series.PHP: DownloadsPHP: PHP 4.4.9 Release Announcement5.0 5.0.02004年7月13號Zend Engine II with a new object model. 5.1.02005年11月24號Performance improvements with introduction of compiler variables in re-engineered PHP Engine. 5.2.02006年11月2號Enabled the filter extension by default. 5.2.82008年12月8號PHP: News Archive - 2008emergent bug fix 5.2.92009年2月26號PHP: News Archive - 2009解決5.2.*超過50多行嗰錯誤搭多嗰安全問題，穩定性增強。 5.2.102009年6月18日箇版畀無其數嗰bug搭安全漏洞修正，时区数据库升級爻。 5.3.02009年6月30日支持命名空间;用XMLReader搭XMLWriter增强XML支持;支持SOAP ,延迟静态绑定，跳转标签（有限嗰goto）, 闭包，Native PHP archives6.0 6.0.0???支持Unicode;移除ereg擴展, 'register_globals', 'magic_quotes'和'safe_mode'; Alternative PHP Cache；Removal of mime_magic and rewrite of fileinfo() 

for better MIME supportPersonal homepage of Jeroen van der Meer

 應用 
PHP是一嗰應用範圍猴廣嗰語言，特別徠網路程式開發方面。一般來講PHP都徠伺服器端執行，通過執行PHP嗰程式碼做成網頁畀瀏覽器讀，還好用來開發命令列腳本程式搭使用者端嗰GUI應用程式。PHP好徠無數弗同種伺服器、作業系統、平台裏執行，也好搭無數資料庫系統做隊用。用PHP甮解鈔票，官方組織PHP Group提供全嗰程式原始碼，使用者好改、編譯、擴充爻用。

 安全 
据National Vulnerability Database嗰數據顯示，搭PHP有告嗰數據庫攻擊比例是：20% 2004, 28% 2005, 43% 2006, 36% 2007, and 35% 2008。其中無數嗰漏洞都好通过远程操作完成，如：黑客好用网络连接攻击服务器，达到盗取或毁者坏数据，发送垃圾邮件或者進行拒绝服务攻击。

 語法 
PHP嗰語法照Perl、C語言樣，還好嵌進HTML裏，下底是一嗰省力嗰Hello World程式：
 <?php
    echo 'Hello World!';
 ?>

PHP剖析引擎單清剖析<?php到?>之間嗰程式碼，嘸徠<?php到?>裏嗰內容會直接送出去，所以講好用下底嗰方式畀PHP嗰程式碼嵌進HTML裏：
 <?php
 //-PHP程式碼
 ?>
 html內容
 <?php
 //-PHP程式碼
 ?>

但徠判斷語句裏嗰HTML代碼勿會直接送出去：
 <?php
 if (false) {
 ?>
 HTML Code
 <?php
 }
 ?>

PHP好用三種註解嗰形式：C搭C++用嗰「/*...*/」還有「//」，還有Perl嗰「#」。

 類型 
PHP主要有下底四樣标量類型：
 整型（integer）
 浮点型（float）
 布尔型（boolean）
 字符串（string）
兩樣複合類型：
 数组（array）
 对象（object）
兩樣特殊類型
 NULL
 資源 (resource)Types Introduction，The PHP Group

 變數 
PHP裏向，变量用「$」加變數嗰名字表示。變數嗰名字用大小寫是弗樣嗰。

好用嗰變數名字是用字母或者底線開頭，後臗管幾嗰字母、數字或者底線都嘸告，PHP也支持用多字节文字當变量名，阿便是講漢字也好用。Language variables，The PHP Group

 物件導向 
PHP從PHP 3起便有基本嗰物件導向（Object oriented）特性，一直到PHP 5畀物件導向部份轉寫寫爻之後，PHP嗰物件導向功能哈算蠻完善。昶好講PHP是一個有完整物件導向功能嗰語言。

 PHP相關資源 

 函式庫 

內建多樣化嗰函數是PHP主要嗰特點之一，許開放程式碼嗰函數提供各樣嗰功能，例如檔案處理、FTP、字串處理等等。許函數嗰使用方法搭C語言差不多（例如printf），箇也是PHP新時嗰一嗰原因。

除了內建嗰函數之外，PHP也提供無數延伸函式庫（extension），同各樣資料庫連接函數、資料壓縮函數、圖形處理等等。一許延伸函式庫需要從PECL（PHP Extension Community Library）耷馱。

 原始碼編碼搭加速 
PHP原始碼是好直接讀取嗰，便囥伺服器裏執行也樣。雖然讓PHP有彈性爻，相對也會造成安全危機搭性能下降嗰問題。

透過PHP編碼器，好畀PHP箇原始碼保護牢嘸處讀取（對商業軟體來講特別要求），也好提昇執行嗰效能。有蠻多公司或團體開發PHP嗰編碼器，畀PHP程式編譯成位元組碼（byte code），再通過伺服器裏安裝對應嗰程式來執行PHP嗰腳本。

除了用編碼器加速之外，PHP還好用動態嗰快取機制來提昇速度，加速工具有商業版嗰，例如Zend Platform，也有開放原始碼嗰加速軟體如eAccelerator、APC、

XCache。

 樣板引擎 
樣板引擎讓PHP應用程式好畀邏輯介面搭使用介面兩嗰分開，讓程式開發進行還省力，目前人蠻中意嗰樣板引擎是PHP官方開發嗰Smarty。不過樣板引擎嗰效能有爭議，因為PHP本身便是一箇樣板引擎，用樣板引擎反而變成「轉發明擂盤」（）。樣板引擎頂好嗰便是不懂PHP程式碼嗰人也好用介面來開發，因為樣板引擎嗰語言比PHP還簡單。

 未來發展 

 PHP 6 
 支持Unicode
 移除ereg扩展, 'register_globals', 'magic_quotes'搭'safe_mode'; Alternative PHP Cache；Removal of mime_magic and rewrite of fileinfo() for better 

MIME supportPersonal homepage of Jeroen van der Meer
 var成為public嗰別名，徠類裏var聲明變成public。
 register_long_array馱爻, PHP5默認是關牢嗰, PHP6乾脆畀伊馱及爻。
 別樣改進

 參考資料 

 外部鏈接 
 PHP首頁
 PHP wiki
 PHP-GTK首頁
 PHP CodeIgniter
 PHP相關自由軟體
 PHP代码压缩 

分类:PHP
分类:LAMP
分类:跨平台軟體