- PHP 7從入門到精通(視頻教學(xué)版)(第2版)
- 張工廠 劉玉萍 羅晨編著
- 4738字
- 2019-07-30 17:35:20
第1章 初識PHP
學(xué)習(xí)目標|Objective
在學(xué)習(xí)PHP之前,讀者需要了解PHP的基本概念、PHP的特點、PHP開發(fā)常用工具等知識,通過本章的學(xué)習(xí),讀者可對PHP有一個初步的了解。本章將主要講述PHP的基礎(chǔ)知識。
內(nèi)容導(dǎo)航|Navigation
- 了解PHP的來龍去脈
- 熟悉PHP的應(yīng)用領(lǐng)域
- 熟悉PHP 7的新特點
- 掌握PHP常用開發(fā)工具
1.1 PHP的來龍去脈
1.1.1 PHP的概念
PHP的初始全稱為Personal Home Page,現(xiàn)已正式更名為Hypertext Preprocessor(超文本預(yù)處理語言)。P是一種HTML內(nèi)嵌式的語言,是在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,語言風(fēng)格類似于C語言,被廣泛用于動態(tài)網(wǎng)站的制作。PHP語言借鑒了C和Java等語言的部分語法,并有自己獨特的特性,使Web開發(fā)者能夠快速地編寫動態(tài)生成頁面的腳本。對于初學(xué)者而言,PHP的優(yōu)勢是可以快速入門。
與其他的編程語言相比,PHP是將程序嵌入HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標記的方式要高許多。PHP還可以執(zhí)行編譯后的代碼,編譯可以起到加密和優(yōu)化代碼運行的作用,使代碼運行得更快。另外,PHP具有非常強大的功能,所有的CGI功能PHP都能實現(xiàn),而且?guī)缀踔С炙辛餍械臄?shù)據(jù)庫和操作系統(tǒng)。最重要的是,PHP還可以用C、C++進行程序的擴展。
1.1.2 PHP的發(fā)展歷程
目前,市面上有很多Web開發(fā)語言,其中PHP是比較出眾的一種Web開發(fā)語言。與其他腳本語言不同,PHP是通過全世界免費代碼開發(fā)者共同的努力才發(fā)展到今天的規(guī)模的。要想了解PHP,首先要從它的發(fā)展歷程開始。
在1994年,Rasmus Lerdorf首次設(shè)計出了PHP程序設(shè)計語言。1995年6月,Rasmus Lerdorf在Usenet新聞組comp.infosystems.www.authoring.cgi上發(fā)布了PHP 1.0聲明。這個早期版本提供了訪客留言本、訪客計數(shù)器等簡單的功能。
1995年,第二版PHP問市,定名為PHP/FI(Form Interpreter)。在這一版本中加入了可以處理更復(fù)雜的嵌入式標簽語言的解析程序,同時加入了對數(shù)據(jù)庫MySQL的支持。自此奠定了PHP在動態(tài)網(wǎng)頁開發(fā)上的影響力。自從PHP加入了這些強大的功能,它的使用量猛增。據(jù)初步統(tǒng)計,在1996年底,有15 000個Web網(wǎng)站使用了PHP/FI;而在1997年中,這一數(shù)字超過了50 000。
前兩個版本的成功讓PHP的設(shè)計者和使用者對PHP的未來充滿了信心。在1997年,PHP開發(fā)小組又加入了Zeev Suraski及Andi Gutmans,他們自愿重新編寫了底層的解析引擎,另外,還有很多人員也自愿加入PHP其他部分的工作,從此PHP成為真正意義上的開源項目。
1998年6月發(fā)布了PHP 3.0。在這一版本中,PHP可以跟Apache服務(wù)器緊密結(jié)合。PHP不斷更新并及時加入新的功能,幾乎支持所有主流與非主流數(shù)據(jù)庫,而且擁有非常高的執(zhí)行效率,這些優(yōu)勢使得1999年使用PHP的網(wǎng)站超過了150 000個。
經(jīng)過3個版本的演化,PHP已經(jīng)變成一個非常強大的Web開發(fā)語言。這種語言非常易用,而且擁有一個強大的類庫,類庫的命名規(guī)則也十分規(guī)范,使用者即使對一些函數(shù)的功能不了解,也可以通過函數(shù)名猜出來。PHP程序可以直接使用HTML編輯器來處理,因此,PHP變得非常流行,有很多大的門戶網(wǎng)站都使用PHP作為自己的Web開發(fā)語言,例如新浪網(wǎng)等。
在2000年5月推出了劃時代的版本PHP 4。PHP 4使用了一種“編譯-執(zhí)行”的模式,其核心引擎更加優(yōu)越,提供了更高的性能,還包含一些其他關(guān)鍵功能,比如支持更多的Web服務(wù)器、HTTP Sessions支持、輸出緩存、更安全地處理用戶輸入的方法以及一些新的語言結(jié)構(gòu)。
2004年7月,PHP 5發(fā)布。該版本以Zend引擎Ⅱ為引擎,并且加入了新功能,如PHP Data Objects(PDO)。PHP 5.0版本強化更多的功能。首先,完全實現(xiàn)面向?qū)ο?,提供名為PHP兼容模式的功能。其次是XML功能,PHP 5.0版本支持可直觀地訪問XML數(shù)據(jù)、名為SimpleXML的XML處理界面。同時還強化了XMLWeb服務(wù)支持,而且標準支持SOAP擴展模塊。數(shù)據(jù)庫方面,PHP新版本提供旨在訪問MySQL的新接口—mysql。除此前的接口外,還可以使用面向?qū)ο蠼缑婧皖A(yù)處理語句(Prepared Statement)等MySQL的新功能。另外,PHP 5.0上還捆綁有小容量RDBMS-SQLite。
2015年6月,第一版PHP 7發(fā)布。這是十年來的首次大改版,最大的特色是在性能上的大突破,能比前一版PHP 5快上一倍。
PHP目前較新的版本是PHP 7,它在PHP 5的基礎(chǔ)上做了進一步的改進,功能更強大,執(zhí)行效率更高,性能更強悍。本書將以PHP 7版本來講解PHP的實用技能。
1.1.3 PHP的優(yōu)勢
PHP能夠迅速發(fā)展并得到廣大使用者喜愛的主要原因是PHP不僅有一般腳本所具有的功能,還有它自身的優(yōu)勢,具體特點如下。
- 源代碼完全開放:事實上,所有的PHP源代碼都可以獲得。讀者可以通過Internet獲得需要的源代碼,快速修改并利用。
- 完全免費:和其他技術(shù)相比,PHP本身是免費的。讀者使用PHP進行Web開發(fā)無須支付任何費用。
- 語法結(jié)構(gòu)簡單:PHP結(jié)合了C語言和Perl語言的特色,編寫簡單,方便易懂,可以嵌入HTML語言中,實用性強,更適合初學(xué)者。
- 跨平臺性強:由于PHP是運行在服務(wù)器端的腳本,因此可以運行在UNIX、Linux和Windows下。
- 效率高:PHP消耗相當(dāng)少的系統(tǒng)資源,并且程序開發(fā)快,運行快。
- 強大的數(shù)據(jù)庫支持:支持目前所有的主流和非主流數(shù)據(jù)庫,使PHP的應(yīng)用對象非常廣泛。
- 面向?qū)ο螅涸赑HP 7中,面向?qū)ο蠓矫嬗辛撕艽蟮母倪M,現(xiàn)在PHP完全可以用來開發(fā)大型商業(yè)程序。
1.2 PHP能干什么
初學(xué)者也許會疑惑,PHP到底能干什么呢?下面將介紹PHP的應(yīng)用領(lǐng)域。
PHP在Web開發(fā)方面的功能非常強大,可以完成一款服務(wù)器所能完成的工作。有了PHP,用戶可以輕松地進行Web開發(fā)。下面具體學(xué)習(xí)一下PHP的應(yīng)用領(lǐng)域,例如生成動態(tài)網(wǎng)頁、收集表單數(shù)據(jù)、發(fā)送或接收Cookies等。
PHP主要應(yīng)用于以下3個領(lǐng)域。
1. 服務(wù)器端腳本
PHP最主要的應(yīng)用領(lǐng)域是服務(wù)器端腳本。服務(wù)器腳本運行需要具備3項配置:PHP解析器、Web瀏覽器和Web服務(wù)器。在Web服務(wù)器運行時,安裝并配置PHP,然后用Web瀏覽器訪問PHP程序輸出。在學(xué)習(xí)的過程中,讀者只要在本機上配置Web服務(wù)器,即可瀏覽制作的PHP頁面。
2. 命令行腳本
命令行腳本和服務(wù)端腳本不同,編寫的命令行腳本并不需要任何服務(wù)器或瀏覽器運行,在命令行腳本模式下,只需要執(zhí)行PHP解析器即可。這些腳本在Windows和Linux平臺下是日常運行腳本,也可以用來處理簡單的文本。
3. 編寫桌面應(yīng)用程序
PHP在桌面應(yīng)用程序的開發(fā)中并不常用,但是如果用戶希望在客戶端應(yīng)用程序中使用PHP編寫圖形界面應(yīng)用程序,就可以通過PHP-GTK來編寫。PHP-GTK是PHP的擴展,并不包含在標準的開發(fā)包中,開發(fā)用戶需要單獨編譯它。
1.3 PHP 7的新特點
PHP 7是PHP編程語言的一個主要版本,是開發(fā)Web應(yīng)用程序的一次革命,可開發(fā)和交付移動企業(yè)和云應(yīng)用。此版本被認為是PHP 5后最重要的變化。
和早期版本相比,PHP 7有以下新的特點。
1. 標量類型聲明
PHP 7增加了對返回類型聲明的支持。返回類型聲明指明了函數(shù)返回值的類型。可用的類型與參數(shù)聲明中可用的類型相同。例如:

結(jié)果會輸出:

2. null合并運算符
新增了null合并運算符“??”。它可以替換三元表達式和isset()。例如:

可以用null合并運算符替換如下:

這兩個語句的含義都是:如果變量a存在且值不為NULL,就會返回自身的值,否則返回第二個操作數(shù)??梢姡略龅??運算符可以簡化判斷語句。
3. 組合比較符
組合比較符“<=>”用于比較兩個表達式。例如,$a<=>$b,表示當(dāng)$a大于、等于、小于$b時,分別返回1、0、-1。

4. 通過define()定義常量數(shù)組
對于常量數(shù)組,可以使用define()定義,例如:

5. 匿名類
現(xiàn)在支持通過new class來實例化一個匿名類,可以用來替代一些“用后即焚”的完整類定義。
6. 支持Unicode字符格式
PHP 7支持任何有效的codepoint編碼,輸出為UTF-8編碼格式的字符串。例如:

在PHP 7環(huán)境下輸出為“晦”,而在早期版本中則輸出為“\u{6666}”。
7. 更多的Error變?yōu)榭刹东@的Exception
PHP 7實現(xiàn)了一個全局的throwable接口(interface),原來的Exception和部分Error都實現(xiàn)了這個接口,以接口的方式定義了異常的繼承結(jié)構(gòu)。于是,PHP 7中更多的Error變?yōu)榭刹东@的Exception返回給開發(fā)者,如果不進行捕獲則為Error,如果捕獲就變?yōu)橐粋€可在程序內(nèi)處理的Exception。這些可被捕獲的Error通常都是不會對程序造成致命傷害的Error,例如函數(shù)不存在。PHP 7進一步方便開發(fā)者處理,讓開發(fā)者對程序的掌控能力更強。在默認情況下,Error會直接導(dǎo)致程序中斷,而PHP 7則提供捕獲并且處理的能力,讓程序繼續(xù)執(zhí)行下去,為程序員提供更靈活的選擇。
例如,執(zhí)行一個不確定是否存在的函數(shù),PHP 5兼容的做法是在函數(shù)被調(diào)用之前追加判斷function_exist,而PHP 7則支持捕獲Exception的處理方式。
8. 性能大幅度提升
PHP 7比PHP5速度快2倍多。另外,PHP 7降低了內(nèi)存消耗,優(yōu)化后,PHP 7使用較少的資源,比PHP 5.6低了50%的內(nèi)存消耗。同時,PHP 7也支持64位架構(gòu)機器,運算速度更快。PHP 7可以服務(wù)于更多的并發(fā)用戶,無須任何額外的硬件。
1.4 PHP常用開發(fā)工具
可以編寫PHP代碼的工具很多,目前常見的有Dreamweaver、PHPEdit、gPHPEdit和Frontpage等,甚至用UltraEdit和記事本等常用工具也可以編寫源代碼。
1.4.1 PHP代碼開發(fā)工具
常見的PHP代碼開發(fā)工具有PHPEdit、gPHPEdit、phpDesigner和Zend Studio。
1. PHPEdit
PHPEdit是Windows下一款優(yōu)秀的PHP腳本IDE(集成開發(fā)環(huán)境)。該軟件為快速、便捷地開發(fā)PHP腳本提供了多種工具,包括語法關(guān)鍵詞高亮、代碼提示和瀏覽、集成PHP調(diào)試工具、幫助生成器、自定義快捷方式、150多個腳本命令、鍵盤模板、報告生成器、快速標記和插件等。
2. gPHPEdit
gPHPEdit是Linux下十分流行的免費的PHP編輯器,雖小巧卻功能強大。gPHPEdit以Linux下的gedit文本編輯器為基礎(chǔ),是專門用于編輯PHP和HTML的編輯器。它可以顯著表示PHP、HTML、CSS以及SQL語句。在編寫過程中提供函數(shù)列表參考、函數(shù)參數(shù)參考、搜索和檢測編程語法等??傊琯PHPEdit是一款完全免費的優(yōu)秀PHP編輯器。
3. phpDesigner
phpDesigner是一款功能強大的、運行高效的、優(yōu)秀的PHP編輯平臺,集合了PHP、XHTML、JavaScript、CSS等基于Web開發(fā)的綜合Web應(yīng)用開發(fā)平臺。它能夠自動捕獲代碼文件中的class、function、varibles等編程元素,并加以整理,在編程過程中給予提示。除此以外,還兼容了流行的各種類庫和框架,比如JavaScript的jQuery庫、YUI庫、Prototype庫等,又比如PHP流行的Zend Framework框架、Symfony框架、CakePHP框架、Yii框架等。此外,它還擁有XDebug、SVN版本管理等工具??梢哉f它是獨立于Eclipse之外的、集合了PHP開發(fā)需求之大成的又一款優(yōu)秀的平臺。
4. Zend Studio
Zend Studio是由Zend科技開發(fā)的一個針對PHP的全面開發(fā)平臺。這個IDE融合了Zend Server和Zend Framework,并且融合了Eclipse開發(fā)環(huán)境。Eclipse是最早適用于Java的IDE環(huán)境,憑借其優(yōu)良的特性和對PHP的支持,成為很有影響力的PHP開發(fā)工具。當(dāng)前最新的Eclipse PHP開發(fā)環(huán)境為Eclipse PDT 2.2.0版本,它擁有支持Windows、Linux和Mac系統(tǒng)的軟件包,可以說是擁有比較完備的體系。它是一款收費的工具。
1.4.2 網(wǎng)頁設(shè)計工具
下面介紹幾種常見的網(wǎng)頁設(shè)計工具。
1. Dreamweaver
Dreamweaver是網(wǎng)頁制作“三劍客”之一,其功能更多體現(xiàn)在對Web頁面HTML的設(shè)計上。隨著Web語言的發(fā)展,Dreamweaver的功能早已不再局限于網(wǎng)頁設(shè)計方面,它更多地支持各種Web應(yīng)用流行的前后臺技術(shù)的綜合運用。Dreamweaver對PHP的支持十分到位,不但對PHP的不同方面進行清晰的表示,并且給予足夠的編程提示,使編程過程相當(dāng)流暢。
2. FrontPage
FrontPage是微軟公司出品的一款網(wǎng)頁制作入門級軟件。FrontPage使用方便簡單,會用Word就能做網(wǎng)頁,所見即所得是其特點,該軟件結(jié)合了設(shè)計、拆分、代碼和預(yù)覽4種模式。
1.4.3 文本編輯工具
常見的文本編輯工具有很多,包括UltraEdit和記事本等。
1. UltraEdit
UltraEdit是一套功能強大的文本編輯器,可以編輯文本、十六進制、ASCII碼,完全可以取代記事本(如果電腦配置足夠強大),內(nèi)建英文單詞檢查、C++及VB指令突顯,可同時編輯多個文件,而且即使開啟很大的文件速度也不會慢。軟件附有HTML標簽顏色顯示、搜尋替換以及無限制的還原功能,一般用來修改EXE或DLL文件。UltraEdit是能夠滿足用戶一切編輯需要的編輯器。
2. 記事本
記事本是Windows系統(tǒng)自帶的文本編輯工具,具備最基本的文本編輯功能,體積小巧,啟動速度快,占用內(nèi)存少,容易使用。記事本主窗口如圖1-1所示。

圖1-1 記事本主窗口
在使用記事本編輯PHP文檔的過程中,需要注意保存方法和技巧。在【另存為】對話框中輸入文件名稱,后綴名為.php,另外將【保存類型】設(shè)置為【所有文件】即可,如圖1-2所示。

圖1-2 【另存為】對話框
1.5 高手甜點
甜點1:如何快速了解PHP的應(yīng)用技術(shù)?
在學(xué)習(xí)的過程中,用戶可以隨時查閱PHP的應(yīng)用情況。啟動IE瀏覽器,在地址欄中輸入http://www.baidu.com,打開搜索引擎,輸入需要搜索的內(nèi)容即可了解相關(guān)技術(shù)。
甜點2:如何選擇PHP開發(fā)軟件?
在PHP的開發(fā)過程中,無論是哪個開發(fā)工具,都要有對PHP的語法和數(shù)據(jù)進行分色表示的能力,以方便開發(fā)者編寫程序。進一步的功能是要有對代碼編寫提示的能力,對于PHP的數(shù)據(jù)類型、運算符、標識、名稱等都有提示功能。
那么多的開發(fā)工具,選擇一款比較適合自己的即可。對于初學(xué)者而言,使用phpDesigner比較好,它集合了PHP、XHTML、JavaScript、CSS等基于Web開發(fā)的綜合Web應(yīng)用開發(fā)技術(shù),隨時可以學(xué)習(xí)相關(guān)的Web技術(shù)。
- Vue.js 3.x快速入門
- WildFly:New Features
- Spring Cloud Alibaba微服務(wù)架構(gòu)設(shè)計與開發(fā)實戰(zhàn)
- Python程序設(shè)計(第3版)
- OpenCV for Secret Agents
- 跟老齊學(xué)Python:輕松入門
- MATLAB應(yīng)用與實驗教程
- VMware vSphere 6.7虛擬化架構(gòu)實戰(zhàn)指南
- 信息安全技術(shù)
- Mastering Yii
- 手把手教你學(xué)C語言
- 劍指Java:核心原理與應(yīng)用實踐
- The Professional ScrumMaster’s Handbook
- 深入剖析Java虛擬機:源碼剖析與實例詳解(基礎(chǔ)卷)
- Julia 1.0 Programming Complete Reference Guide