PHP開發(fā)大型項目的方法:OOP思想(2)_PHP教程
推薦:動態(tài)網(wǎng)頁制作PHP常用的正則表達式匹配中文字符的正則表達式: [u4e00-u9fa5] 匹配雙字節(jié)字符(包括漢字在內(nèi)): [^
代碼:
<?php function Another() { $this->y=5; $this->Something(); //顯示調(diào)用基類構(gòu)造函數(shù) } ?> |
OOP的一個很好的機制是使用抽象類。抽象類是不能實例化,只能提供給派生類一個接口。設(shè)計者通常使用抽象類來強迫程序員從基類派生,這樣可以確保新的類包含一些期待的功能。在PHP中沒有標(biāo)準的方法,但是:
如果你需要這個特性,可以通過定義基類,并在它的構(gòu)造函數(shù)后加上"die" 的調(diào)用,這樣就可以保證基類是不可實例化的,現(xiàn)在在每一個方法(接口)后面加上"die" 語句,所以,如果一個程序員在派生類中沒有覆蓋方法,將引發(fā)一個錯誤。而且因為PHP 是無類型的,你可能需要確認一個對象是來自于你的基類的派生類,那么在基類中增加一個方法來實義類的身份(返回某種標(biāo)識id),并且在你接收到一個對象參數(shù)時校驗這個值。當(dāng)然,如果一個邪惡不好的程序員在派生類中覆蓋了這個方法,這種方法就不起作用了,不過一般問題多發(fā)現(xiàn)在懶惰的程序員身上,而不是邪惡的程序員。
當(dāng)然,能夠讓基類對程序員無法看到是很好的,只要將接口打印出來做他們的工作就可以了。
在PHP中沒有析構(gòu)函數(shù)。
重載(與覆蓋不同)在PHP中不支持。在OOP中,你可以重載一個方法來實現(xiàn)兩個或重多的方法具有相同的名字,但是有不同數(shù)量或類型的參數(shù)(這要看語言)。PHP 是一種松散類型的語言,所以通過類型重載不起作用,然而通過參數(shù)的個數(shù)不同來重載也不起作用。
有時在OOP中重載構(gòu)造函數(shù)非常好,這樣你可以通過不同的方法創(chuàng)建對象(傳遞不同數(shù)量的參數(shù))。在PHP中實現(xiàn)它的技巧是:
代碼:
<?php class Myclass { function Myclass() { $name="Myclass".func_num_args(); $this->$name(); //注意$this->name()一般是錯誤的,但是在這里$name是一個將被調(diào)用方法的名字 } function Myclass1($x) { code; } function Myclass2($x,$y) { code; } } ?> |
通過在類中的額外的處理,使用這個類對用戶是透明的:
$obj1=new Myclass(´1´); //將調(diào)用Myclass1 |
有時這個非常好用。
多態(tài)
多態(tài)是對象的一種能力,它可以在運行時刻根據(jù)傳遞的對象參數(shù),決定調(diào)用哪一個對象的方法。例如,如果你有一個figure的類,它定義了一個draw的方法。并且派生了circle和rectangle 類,在派生類中你覆蓋了draw方法,你可能還有一個函數(shù),它希望使用一個參數(shù)x,并且可以調(diào)用$x->draw() 。如果你有多態(tài)性,調(diào)用哪個draw方法就依賴于你傳遞給這個函數(shù)的對象類型。
多態(tài)性在象PHP這樣的解釋語言(想象一下一個C 編譯器生成這樣的代碼,你應(yīng)該調(diào)用哪一個方法?你也不知道你擁有的對象是什么類型的,好,這不是重點)是非常容易和自然的。所以PHP當(dāng)然支持多態(tài)性。
代碼:
<?php function niceDrawing($x) { //假設(shè)這是Board類的一個方法 $x->draw(); } $obj=new Circle(3,187); $obj2=new Rectangle(4,5); $board->niceDrawing($obj); //將調(diào)用Circle的draw方法 $board->niceDrawing($obj2); //將調(diào)用Rectangle的draw方法 ?> |
用PHP進行面向?qū)ο缶幊?/strong>
一些"純化論者(purists)"可能會說PHP不是一個真正的面向?qū)ο蟮恼Z言,這是事實。PHP 是一個混合型語言,你可以使用OOP,也可以使用傳統(tǒng)的過程化編程。然而,對于大型項目,你可能想/需要在PHP 中使用純的OOP去聲明類,而且在你的項目只用對象和類。
隨著項目越來越大,使用OOP可能會有幫助,OOP代碼很容易維護,容易理解和重用。這些就是軟件工程的基礎(chǔ)。在基于web的項目中應(yīng)用這些概念就成為將來網(wǎng)站成功的關(guān)鍵。
分享:實現(xiàn)dedecms圖集單擊圖片翻頁的功能題記:在很多相冊的網(wǎng)站中,都有這樣的功能:當(dāng)圖片分多頁顯示的情況下,點擊圖片會自動翻頁到下一張圖片,接下來我們在dedecms4中實現(xiàn)這個功能。以下是實現(xiàn)方法: 1、為了實現(xiàn)這個功能,我們
- 相關(guān)鏈接:
- 教程說明:
PHP教程-PHP開發(fā)大型項目的方法:OOP思想(2)
。