首页 | 主题 | 图库 | 问答 | 文摘 | 原创 | 百科

历史 | 地理 | 人物 | 艺术 | 体育 | 科学 | 音乐 | 电影 | 信息技术 | 世界遗产

 开放、中立,源自维基百科

个人工具


PHP

维库,知识与思想的自由文库

跳转到: 导航, 搜索
PHP
编程范型: 物件導向函數式
設計者: Rasmus Lerdorf
實作者: The PHP Group
最近釋出日期: 5.2.3 / 2007年6月1日
型態系統: 動態、弱型別
啟發語言: PerlC
作業系統: 跨平台
許可證: PHP License
Website: PHP 官方站点

PHP 是一种流行的开放源代码腳本语言。官方正式名稱为“PHP: Hypertext Preprocessor”的递归缩写。

PHP主要用於服务器端应用程序動態網頁上,但是也可以用在命令列上執行,或是開發獨立的圖形使用者介面(GUI)。

目录

[编辑] PHP 發展歷史

[编辑] PHP/FI

1994年,加拿大籍[1]的程式設計師Rasmus Lerdorf開發了一組Perl腳本,用來追蹤他的線上履歷何時被使用到,他把這組腳本命名為"Personal Home Page Tools"。隨著這個腳本的功能日趨複雜,Lerdorf開始以C語言實做一些功能,例如連接資料庫、簡易的動態網頁開發。Lerdorf決定釋出這組程式的原始碼,讓大眾可以修改,並把這個程式命名為PHP/FI(Personal Home Page / Forms Interpreter的縮寫)。隨著PHP 3的出現,PHP/FI也很快的結束開發。

[编辑] PHP 3

1997年,Tel Aviv公司的Zeev Suraski和Andi Gutmans改寫PHP的解析引擎PHP/FI,Rasmus Lerdorf也決定中止PHP/FI的開發,並把PHP重新命名為"PHP: Hypertext Preprocessor"。經過9個月的測試,在1998年釋出了PHP 3。PHP 3最大的特色是加入了延伸函式庫的功能,吸引了許多人投入PHP延伸函式庫的開發,豐富了PHP的功能,另外物件導向的功能也在PHP 3開始出現(不過並不是很完整)。1999年兩人在以色列成立了Zend Technologies公司來投入PHP的開發工作,並且開始製作下一代的PHP解析引擎 - Zend引擎

[编辑] PHP 4

2000年5月22日,以Zend引擎 1.0為解析引擎的PHP 4.0 发布。這也是PHP開始大受歡迎的版本。目前PHP 4還有在做安全性的更新,但是即將於2007年12月31日後停止支援服務,安全更新也將於2008年8月8號之後終止,PHP官方建議使用者升級至PHP 5之後的版本[2]

PHP 4系列的最新版本是PHP 4.4.7,发布于2007年5月3日[3]

[编辑] PHP 5

2004年7月13日,以Zend引擎II为基礎的PHP 5.0 发布,同時也加入了許多新特性:[4]

  • 更完整的物件導向支持:基本上到PHP 5之後PHP才算是比較完整的面向对象語言。
  • 透過新的Zend引擎,提昇了PHP執行的速度。
  • MySQL資料庫有更完整的支持。
  • 更佳的XML支持。
  • 內建SQLite資料庫(但在PHP 5.1取消了內建,改用扩展函数庫的方式)。
  • 整合了SOAP的支持。
  • 提供例外處理
  • 新的資料庫存取介面PDO(PHP Data Objects)。

PHP 5系列的最新版本是PHP 5.2.3,发布于2007年6月1日[5]

[编辑] 應用

PHP主要應用在網頁伺服器,處理使用者的輸入來產生網頁。但是命令列腳本或是視窗程式介面(GUI)的開發也是PHP的主要應用範圍。

[编辑] 伺服器端腳本語言

PHP最初就是設計成伺服器端腳本語言,因此這也是PHP應用最廣的部份。在此領域有許多其他的競爭者,例如ASP.NETColdFusionJSPPerlRuby on Rails等等。

在網路工業領域,PHP是LAMP架構的其中一部分,所謂的LAMP是指Linux、Apache、MySQL、以及PHP所組成的網路環境,提供了許多安全、可靠的網頁應用程式。PHP目前已經是全世界最受歡迎的伺服器端腳本語言,跨平台的特性更是讓PHP廣為流傳,目前世界上有超過2000萬台伺服器安裝有PHP[6]

[编辑] 命令列腳本

PHP也可以用命令列上執行來使用,例如分析紀錄檔、系統管理工作等。這些工作過去都是由一些其他的腳本語言例如PerlPythonawk等來執行。

[编辑] 圖形使用者介面(GUI)

透過和GUI函式庫GTK+的結合,PHP也可以應用在圖形使用者介面(GUI)的開發上,目前的應用還不普遍。

[编辑] 語法

PHP的語法參考了PerlC語言,而且可以整合在HTML之中,以下是一個簡單的Hello World程式: <source lang="php">

<?php
   echo 'Hello World!';
?></source>

PHP剖析引擎只剖析<?php?>之間的程式碼,而不包含在<?php?>之間的內容則會直接送出,所以可以用以下的方式來將PHP程式碼嵌入在HTML之中: <source lang="php">

<?php
//PHP程式碼
?>
html內容
<?php
//PHP程式碼
?></source>

但是在判断语句中的HTML代码并不会被直接送出: <source lang="php">

<?php
if (false) {
?>
HTML Code
<?php
}
?>

</source>

PHP可以用三種註解的形式:C與C++所使用的“/*...*/”與“//”,和Perl的“#”。

[编辑] 類型

PHP主要有以下四種标量類型:

两种复合类型

两种特殊类型

[编辑] 变量

PHP中的变量用“$”后跟变量名表示。变量名是大小写敏感的。有效的变量名以字母或下划线打头,后跟任意数目的字母、数字或下划线。[8]

[编辑] 物件導向

PHP從PHP 3開始有了基本的物件導向的特性,但直到PHP 5將物件導向部份重新改寫之後,PHP的物件導向功能才比較完善。現在PHP可以說是一個有完整物件導向功能的語言。

[编辑] PHP相關資源

[编辑] 函式庫

主条目:PHP函式庫列表

內建多樣化的函數是PHP主要的特點之一,這些開放程式碼的函數提供了各種不同的功能,例如檔案處理、FTP、字串處理、等等。這些函數的使用方法和C語言相近(例如printf),這也是PHP廣為流行的原因之一。

除了內建的函數之外,PHP也提供了很多延伸函式庫(extension),像是各種資料庫連接函數、資料壓縮函數、圖形處理等等。有些延伸函式庫需要從PECL(PHP Extension Community Library)取得。

[编辑] 原始碼編碼和加速

PHP原始碼是可以直接讀取的,即使放到伺服器上執行也是一樣。雖然讓PHP多了彈性,但相對的會造成安全危機和性能下降的問題。

透過PHP編碼器,可以保護PHP的原始碼不被讀取(對商業軟體來說特別有需求),也可以提昇執行的效能。有許多公司或團體開發PHP的編碼器,將PHP程式編譯成位元組碼,再透過伺服器上安裝對應的程式來執行PHP腳本。

除了透過編碼器加速之外,PHP還可以透過動態的快取機制來提昇速度,加速工具有商業版的,例如Zend Platform,也有開放原始碼的加速軟體如eAcceleratorAPCXCache

[编辑] 樣板引擎

樣板引擎讓PHP應用程式可以做邏輯和使用介面上的分離。其中一個受歡迎的樣板引擎是PHP官方開發的Smarty

[编辑] PEAR

PEARPHP Extension and Application Repository的縮寫,由Stig S. Bakken於2000年在PHP開發者會議(PHP Developers' Meeting, PDM) 上提出,目的是實做可以重複使用的函式庫來提供PHP社群使用。到今天PEAR已經包含很多類型的函式庫,例如資料庫連接、內容快取、數學計算、電子商務等等。

[编辑] PECL

PECL是PHP Extension Community Library的縮寫,目的是提供PHP社群各種延伸函式庫。PECL在2003年從PEAR專案分離出來,現在已經是一個獨立運作的專案。

[编辑] 對PHP的批評

即使PHP是廣受歡迎的語言,但仍然受到很多的批評,例如:

  • PHP沒有原生支援Unicode或是多位元字集(例如中文、日文、韓文等需要用兩個以上ASCII字元來表示的字集),導致用PHP寫的軟體在國際語言化上遇到相當多的困難。
  • PHP沒有名字空間(Namespace)的設計,降低了PHP語言設計上的彈性,也導致函數名稱過長的問題。
  • PHP的函數命名規則非常的混亂,許多函數功能類似,但是卻使用不同的函數名稱和參數順序,例如strpos($haystack, needle)in_array($needle, $haystack)strcasecmpstristr,導致編寫PHP程式時需要做相當多的手冊查詢工作,初學者也往往不知不覺重新編寫已經內建的函數,降低了開發的效率。
  • PHP的魔術引號(magic quotes)功能可以自動處理使用者輸入字串中的跳脫字元,有效避免SQL隱碼攻擊SQL injection),但是因為不是每個使用者的輸入都會寫入到資料庫,處理這些沒有寫入資料庫的字串便浪費了效能。此外不是每個PHP環境都會開啟魔術引號,程式設計時需要便需要對不同的伺服器環境做因應,造成程式設計上的麻煩。魔術引號功能預計將會於PHP 6時取消。
  • 有些PHP的延伸函式庫不是執行緒安全(threadsafe),導致PHP安裝在多執行緒的伺服器例如Apache 2上會發生不穩定的狀況。[9]

[编辑] 未來發展

[编辑] GoPHP 5

  • 一個PHP研發者聯盟,預告將在2008年2月5日,將他們旗下的php軟體的執行環境提高到PHP 5.2.0以後的版本……[10][11]

[编辑] PHP 5.3

  • namespaces 命名空間支持?[12]

[编辑] PHP 6

PHP 6目前已經開始開發,將針對PHP 5的一些缺點做改進[13],例如:

  • 原生Unicode支援
  • 移除魔術引號(magic quotes)
  • 移除全域變數(register_globals)
  • 移除安全模式(safe_mode)

PHP 6許多的功能尚未定案,仍然在討論中,發佈的日期也尚未確定。

[编辑] 參考資料

[编辑] 相关链接

[编辑] PHP相关的書籍

[编辑] 与PHP相关的资源


電腦小作品 这是一个与计算机相关的小作品,您可以帮助维库扩充其内容。


其它语言
AD Links