版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、考察的特性本文主要考察 php v5.3 的以下特性: 延遲靜態(tài)綁定 名稱空間 類方法重載 變量解析和 heredoc 但是,在繼續(xù)之前,需要設(shè)置 php v5.3。設(shè)置php 廣為人知的一個特點就是設(shè)置起來有點麻煩。這也許是因為 php 是安裝在 web 服務(wù)器(例如 apache)上的,而且常常需要連接到外部數(shù)據(jù)庫(例如 mysql)。而且,某種意義上,php 腳本是嵌入在 html 代碼中的。換句話說,php 這種技術(shù)橫跨多個復(fù)雜的領(lǐng)域。所以,在編寫 php 腳本代碼之前,必須越過很多的障礙。我希望可以改善這一現(xiàn)狀,但是與軟件技術(shù)有關(guān)的很多事情仍然很困難。不過,對于那些使用 apple
2、macs 的幸運(yùn)讀者來說,設(shè)置過程再簡單不過了:1. 獲得 php 二進(jìn)制安裝文件(http:/www.entropy.ch/software/macosx/php/)。 2. 在 system preferences 中關(guān)閉 web sharing。 3. 找到 /etc/apache2/httpd.conf 文件。 4. 在 httpd.conf 文件中注釋掉下面這行:loadmodule php5_module。 5. 運(yùn)行 php v5.3 安裝文件(如果您愿意,也可以構(gòu)建源代碼)。 6. 在 system preferences 中打開 web sharing。 本文的目的不是僅僅介
3、紹如何安裝,所以如果您的平臺是 microsoft windows 或 linux,請參閱一些很棒的 php 參考書籍(見我在 參考資料 中推薦的書籍)。為了檢查 php 是否已安裝以及版本是否合適,在 /library/webserver/documents 文件夾中創(chuàng)建一個名為 phpinfo1.php 的文件。清單 1 展示了這個腳本文件的內(nèi)容。本文中的所有腳本都在 下載 小節(jié)提供的壓縮(zip)文件中,所以實際上不需要創(chuàng)建任何文件。清單 1. phpinfo1.php將該腳本文件放在 /library/webserver/documents 文件夾中之后,訪問 http:/localh
4、ost/phpinfo1.php。應(yīng)該可以看到類似圖 1 的界面。這里可能需要用您主機(jī)的 ip 地址替換 url 中的 “l(fā)ocalhost”。圖 1. php v5.3.0 安裝成功延遲靜態(tài)綁定php v5.3 擴(kuò)展了 static 關(guān)鍵詞的使用?,F(xiàn)在,無需實例化類便可訪問靜態(tài)類方法和屬性。當(dāng)類不存在對象,或者不需要對象時,這個特性就比較方便。清單 2 展示了延遲靜態(tài)綁定的一個例子。清單 2. 延遲靜態(tài)綁定清單 2 中的代碼產(chǎn)生以下輸出:calling who method from class b 在 php v5.3.0 之前,類 a 中的方法可能被定義為 self:who()。不幸的是
5、,這將導(dǎo)致調(diào)用類 a 中的函數(shù),而不是子類 b 中的函數(shù)。php v5.3.0 用 static: 關(guān)鍵詞修復(fù)了這個問題,允許在運(yùn)行時才引用之前調(diào)用的類方法。顯然這就是清單 2 中代碼的目的。增強(qiáng)面向?qū)ο笕魏文茉鰪?qiáng) php 面向?qū)ο蠓矫娴母淖兌际鞘芄膭畹?,因為這將導(dǎo)致更可靠的設(shè)計和更易于維護(hù)的代碼。對于清單 2 中的代碼我有些許微詞,基類(a)和派生類(b)中的 who() 方法是重復(fù)的。如果類 b 中不必復(fù)制該代碼就好了,但是似乎 php v5.3.0 中的 _class_ 語法要求必須這么做。也就是說,_class_ 不支持延遲綁定。清單 2 中使用 _class_ 也許有點勉強(qiáng),但確實可
6、以說明 php v5.3.0 有一個小小的問題。顯然,對于清單 2 中的例子,這不是多大的問題,但是對于有數(shù)千行 php 代碼的網(wǎng)站來說,就沒那么簡單了。重復(fù)代碼通常意味著重復(fù)勞動。名稱空間php v5.3 提供名稱空間功能,以增強(qiáng)該語言的封裝能力。名稱空間在現(xiàn)代語言中非常常見,例如 c# 和 xml。名稱空間的主要優(yōu)點是,通過它可以為代碼符號(類、函數(shù)和常量)定義獨立的容器,這聽起來有點復(fù)雜,其實不然。清單 3 顯示了使用 php 名稱空間定義本地和全局字符串常量的一個例子。清單 3. php 名稱空間?php namespace test; define(astring, hello wo
7、rld!); define(testastring, hello world from my namespace!); echo my string is: ; echo astring; echo ; echo my string is ; echo astring; echo ; ? 清單 3 中的代碼產(chǎn)生以下輸出:my string is: hello world from my namespace! my string is: hello world!那么,代碼中發(fā)生了什么?第一個 define 語句在名稱空間 test 中創(chuàng)建一個字符串常量 astring。然后,當(dāng)引用 astrin
8、g 字符串時,引擎首先查看本地 test 名稱空間。這就是為什么看到本地定義的字符串首先顯示。然后,要看到全局定義的字符串,只需使用語法 astring。有了這些簡單的規(guī)則,便可以使用任意數(shù)量的名稱空間,而不必?fù)?dān)心名稱沖突。有了名稱空間功能,和之前相比,代碼之間的界限更加清晰。而這一點又有助于團(tuán)隊環(huán)境中的代碼整合。換句話說,不同的團(tuán)隊可以分配他們自己的名稱空間,當(dāng)所有團(tuán)隊成員都遵循這個慣例時,名稱沖突的情況應(yīng)該會降為零。這也是 5.3.0 版對 php 語言在面向?qū)ο蠓矫娴囊粋€增強(qiáng)。類方法重載在 php 中,術(shù)語重載(overloading) 與通常的面向?qū)ο笊舷挛纳杂胁煌?。?java 語言
9、或 c# 中,“重載” 方法是指為不同參數(shù)列表提供相同代碼的方法。例如,如果有一個名為 draw(string str) 的方法,那么重載的方法可以有以下形式:draw(string str, int i)。這種方法符號名稱被稱作方法簽名,為了便于重載,返回類型被省略。在 php 中,“重載” 是指動態(tài)創(chuàng)建的方法和屬性。這實際上是動態(tài)代碼,任何這樣的動態(tài)實體都是由所謂的魔術(shù)方法(magic methods) 來處理??梢栽谝粋€類中為各種不同的動作創(chuàng)建這些魔術(shù)方法。然后,當(dāng)代碼中遇到未聲明或不可見的屬性或方法時,便可以調(diào)用重載方法。這樣風(fēng)格的重載提供了很大程度上的靈活性。聽起來有些復(fù)雜,所以來看
10、看一個具體的例子。清單 4 展示如何使用 php 重載調(diào)用對象和類方法。清單 4. php 重載runoverloadedtest(in an object context); overloadedmethodtest:runoverloadedtest(in a static context); / as of php 5.3.0 ? 清單 4 中的代碼產(chǎn)生以下輸出:calling object method runoverloadedtest in an object context calling static method runoverloadedtest in a static c
11、ontext在清單 4 中,注意重載的代碼是如何根據(jù)調(diào)用代碼來推斷方法名和參數(shù)的:$obj-runoverloadedtest(in an object context); overloadedmethodtest:runoverloadedtest(in a static context); / as of php 5.3.0 要使用這種能力,程序員需要承擔(dān)較大的責(zé)任。雖然重載為編寫靈活的代碼提供了便利,但同時也為錯誤提供了土壤。所以,使用重載時應(yīng)該謹(jǐn)慎,并且要有嚴(yán)格的代碼測試紀(jì)律。變量解析和 heredocphp 的優(yōu)勢之一在于字符串解析。php 對于字符串的長度沒有限制,只要主機(jī)的可用內(nèi)
12、存夠大就行。清單 5 展示了使用 php 時擁有的靈活性。清單 5. php 解析清單 5 中的代碼產(chǎn)生以下輸出:coffees taste is great he drank a number of he drank some coffees he drank some coffees清單 5 中的代碼并不是直到 php v5.3.0 才有的。這里給出這段代碼,只是為了提醒您字符串處理支持和一些解析規(guī)則。但是,php v5.3.0 增加了增強(qiáng)的 heredoc 語法支持。清單 6 顯示了一個簡單的例子。清單 6. php v5.3.0 heredoc 的應(yīng)用 foobar hello world! foobar; ?清單 6 中的代碼產(chǎn)生以下令人驚嘆的輸出:hello world! 那么,清單 6 有什么特別之處呢?php v5.3.0 中的 heredoc 支持使用雙引號。其優(yōu)點主要在于,雙引號中的內(nèi)容不會被解析,這樣便有了更大的靈活性?;旧?,這只是在已經(jīng)強(qiáng)大的字符串支持的基礎(chǔ)上增加了更多的靈活性。php v5.3.0 的在線參考包括更多關(guān)于這個主題和 php v5.3.0 其他相關(guān)主題的資料。php 是一項有吸引力的技術(shù)。它為拼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家紡導(dǎo)購專業(yè)知識培訓(xùn)課件
- 酒店物業(yè)管理服務(wù)合同三篇
- 社團(tuán)活動對學(xué)生發(fā)展的影響計劃
- 秋季學(xué)期學(xué)生學(xué)習(xí)成果展示計劃
- 促肝細(xì)胞生長素相關(guān)項目投資計劃書
- 前臺文員的個人發(fā)展規(guī)劃計劃
- 銷售心理學(xué)與客戶洞察培訓(xùn)
- 張緊裝置相關(guān)項目投資計劃書范本
- 輸尿管癌的護(hù)理查房
- 腦卒中并發(fā)吞咽障礙個案護(hù)理
- 中級計量經(jīng)濟(jì)學(xué)知到智慧樹章節(jié)測試課后答案2024年秋浙江工業(yè)大學(xué)
- 教科版二年級上冊科學(xué)期末試卷及答案
- 中國地理(廣州大學(xué))智慧樹知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 2024浙江省旅游投資集團(tuán)總部管理人員招聘筆試參考題庫附帶答案詳解
- 貴州省黔東南州2022-2023學(xué)年八年級上學(xué)期期末文化水平測試數(shù)學(xué)試卷(含答案)
- 【教案】 氯氣的實驗室制法教案
- 體檢中心重大陽性結(jié)果上報規(guī)定(完整版)
- 語法5 復(fù)雜短語的分析[實用課資]
- (完整版)生物安全柜年度檢驗報告
- ETF基礎(chǔ)篇--特有概念、計算邏輯及模板---文庫版(現(xiàn)金差額、現(xiàn)金替代、ETF申贖、計算模板)
- XX學(xué)院課程思政校級教學(xué)團(tuán)隊年度立項申請表
評論
0/150
提交評論