日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

《PHP設(shè)計模式介紹》導(dǎo)言(2)_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:php escapeshellcmd多字節(jié)編碼漏洞
漏洞公告在http://www.sektioneins.de/advisories/SE-2008-03.txt PHP 5 = 5.2.5 PHP 4 = 4.4.8 一些允許如GBK,EUC-KR, SJIS等寬字節(jié)字符集的系統(tǒng)都可能受此影響,影響還是非常

PHP4和PHP5

當我寫這本書的時候,PHP5已經(jīng)發(fā)行有一段時間了,但是還沒有被公眾團體廣泛的采用。在我自己的工作上,我已經(jīng)開始把新的應(yīng)用程序開發(fā)工作遷移到 PHP5.0.3的環(huán)境中,而且到目前為止我很高興的發(fā)現(xiàn)PHP5對PHP4的代碼具有很好的向后兼容性,同時它的面對對象模型是PHP5最有意義的新特 征之一。

有很多很好的文章和指導(dǎo)手冊來處理不同PHP版本之間的對象模型之間的細微差別。但簡單來說,PHP5提供了:

  1. 對象柄(將在下面解釋,更詳細的請見第二章:對象模型的價值)?
  2. 更好的構(gòu)造器(統(tǒng)一名字,不允許改變)?
  3. 析構(gòu)器?
  4. 可見度(方法和屬性的public公開,protected受保護,private私有)?
  5. 異常處理(可以選擇新的語法try{}catch{}來觸發(fā)錯誤)?
  6. 靜態(tài)類?
  7. 映像(動態(tài)檢查類,方法,屬性)?
  8. 類型隱藏?

PHP5也提供了一些更加模糊的特征:

新的魔術(shù)方法?

  1. __get()和__set()允許你來控制變量存取
  2. __call()讓你能動態(tài)的截取被call對象的所有屬性。
  3. __sleep()和__wakeup()能讓你重載序列化的方法
  4. __toString()讓你能控制如何用一個字符串來描述這個對象自身。
  5. 自動加載Autoloading(當類第一次被對象化時候,允許用戶自動加載該類)?
  6. Final(不允許該方法或者一個類被其子類重載)?

對象柄

PHP5最好的特性就是采用句柄來定義類,類似于一個文件或者數(shù)據(jù)庫句柄。在PHP函數(shù)中使用對象不再是含蓄的復(fù)制這個對象,而是提供一個操作句柄。

為了更加清楚的看出其間的不同,我們考慮下面兩個例子:

// PHP4 class
class ExampleP1 {
var $foo;
function setFoo($foo) {
$this->foo = $foo`;
}
function getFoo() {
return $this->foo;
}
}
function changeExample($param) {
$param->setFoo(‘blah’);
return $param->getFoo();
}
$obj = new ExampleP1;
$obj->setFoo(‘bar’);
echo $obj->getFoo(); // bar
echo ChangeExample($obj); //blah
echo $obj->getFoo(); // bar

在PHP4中,函數(shù)changeExample()中的變量$param是$obj的一個復(fù)制,所以,這個函數(shù)沒有改變原來對象中的$foo的值,這樣$obj->getFoo()最終輸出的是’bar’。

在PHP5中,由于$obj在函數(shù)中只是一個對象操作柄,同樣的changeExample()函數(shù)確確實實的影響了原來的對象。換句話說,使用操作柄,就不再需要去復(fù)制了而$param就是$obj實例。

// PHP5 class
class ExampleP2 {
protected $foo;
function setFoo($foo) {
$this->foo = $foo;
}
function getFoo() {
return $this->foo;
}
}
$obj = new ExampleP2;
$obj->setFoo(‘bar’);
echo $obj->getFoo(); // bar
echo ChangeExample($obj); //blah
echo $obj->getFoo(); // IMPORTANT, produces blah

當你在其他的對象或者這個對象內(nèi)置的構(gòu)造函數(shù)(__construct)里面使用$this這個變量時,這個問題會變的更加的復(fù)雜。

結(jié)果是在PHP4中,你幾乎總需要:

  1. 創(chuàng)建一個引用對象,就象這樣$obj=?& new class;
  2. 在函數(shù)中調(diào)用引用對象,比如function func(?&$obj_param){}
  3. 通過引用函數(shù)來捕捉對象,比如function? &some_func(){} $return_obj=&some_funct()

事實上,現(xiàn)在有些情況下你也需要復(fù)制原始對象。在我的PHP4代碼里面,我總是把任何無引用的對象任務(wù)比如為一個明顯的對象復(fù)制注釋的很清楚。從長 期來說,這樣的一個簡短的注釋能夠極大的減輕任何一個維護你代碼的人的頭痛(譯者注:這樣的代碼可維護性很強)。引用傳值,對象柄和對象復(fù)制的相關(guān)知識將 在第二章“對象模式的價值”里面詳細講解。

盡管我個人很偏向于使用PHP5開發(fā),但我感覺到PHP4將繼續(xù)被我們使用相當長的一段時間,而且現(xiàn)有的公開發(fā)布的項目也將繼續(xù)支持PHP4。所以,本 書對兩種版本的PHP提供相同的支持。盡可能的提供了PHP4,PHP5兩個版本的實例代碼。在每一章里面,每一個代碼塊(在不同的PHP版本中有所改動 的)中都提供有相應(yīng)的注釋來暗示其改變,比如//php4和//php5。

參考書目和其他資源

這里有很多相關(guān)的參考書來幫助你更好的學習設(shè)計模式。設(shè)計模式的“圣經(jīng)”(譯者譯:最好的書)是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides(他的開創(chuàng)性作品經(jīng)常被提及為“Gang of Four”簡寫為”GOF”,就是代表他們四個人)撰寫的《設(shè)計模式:可重用的面對對象軟件開發(fā)原理》。

關(guān)于“設(shè)計模式”,下一個最有用的關(guān)于PHP WEB應(yīng)用程序設(shè)計模式方面的書就是Martin Fowler出版的Patterns of Enterprise Application Architecture (譯者譯:企業(yè)應(yīng)用程序體系結(jié)構(gòu)模型)。與GOF的書包含了所有一般的設(shè)計模式相比,F(xiàn)owler的這本書詳細的介紹了許多專門用于開發(fā)web應(yīng)用程序的 設(shè)計模式。

另外在很多網(wǎng)站上也提供了有關(guān)設(shè)計模式方面的豐富資源,一個特別典型的網(wǎng)站就是波特蘭模型庫(http://cz.com/por/)。

另外一個關(guān)于PHP設(shè)計模式的站點是phpPatterns,在線地址是http://www.phppatterns.com。

感謝

我很感謝我得老板,在他那里,我的任務(wù)和責任允許我在這個我感興趣的領(lǐng)域花費一部分時間,也感謝他給我提供知識和經(jīng)驗讓我有信心寫完這本書。

我的靈感,想法和經(jīng)驗的另外一個來源是SitePoint這個站點(http://www.sitepoint.com)的論壇。特別值得一提的,那些經(jīng) 常上”Advanced PHP Forum”(譯者譯:PHP高級論壇)的投稿人都有著豐富的知識與經(jīng)驗,他們是我在網(wǎng)上發(fā)現(xiàn)的最慷慨大方的共享自己想法的團體。我也正是通過這些資源 (譯者注:SitePoint站點)登陸了SimpleTest(http://simpletest.sf.net),WACT(http: //wact.sf.net)和其他許多我認為無價的PHP工程項目。在接下來的歲月里,我希望SitePoint能夠繼續(xù)成為PHP開發(fā)者的豐富資源 點。

沒有PHP開發(fā)團隊的貢獻和重要的努力,這本書顯然是不可能存在的。因為正是他們開發(fā)出如此好用、易學、通用而且非常適合開發(fā)WEB應(yīng)用程序的語言。

最后,我還要感謝Marco Tabini 和php|architect的全體成員。這本雜志(譯者注:php|architect)已經(jīng)成為許多不同PHP主題的來源,而且這些主題都是專業(yè)的開發(fā)人員發(fā)布的。由Macro和公司主辦的會議也是相當好的。

分享:詳細講解PHP中緩存技術(shù)的應(yīng)用
PHP,一門最近幾年興起的web設(shè)計腳本語言,由于它的強大和可伸縮性,近幾年來得到長足的發(fā)展,php相比傳統(tǒng)的asp網(wǎng)站,在速度上有絕對的優(yōu)勢,想mssql轉(zhuǎn)6萬條數(shù)據(jù)php如需要40秒,asp不下2分鐘.但是,由于

共2頁上一頁12下一頁
來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
相關(guān)PHP教程