程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP中實現面向對象編程(下)

PHP中實現面向對象編程(下)

編輯:關於PHP編程

多態性
  多態性被定義為當在運行時刻一個對象作為參數傳遞時,對象能決定調用那個方法的能力。例如,用一個類定義了方法 "draw",繼承類重定義 "draw" 的行為來畫圓或正方形,這樣你就有一個參數為 x 的函數,在函數裡可以調用$x->draw(). 如果支持多態性,那麼 "draw" 方法的調用就取決於對象 x 的類型。多態性在PHP中很自然被支持(想一想這種情況在C++編譯器中如果編譯,那一個方法被調用?然而你不知道對象的類型是什麼,當然現在不是這種情況)。
  幸好PHP支持多態性。
function niceDrawing($x) {
//Supose this is a method of the class Board.
$x->draw();
}
$obj=new Circle(3,187);
$obj2=new Rectangle(4,5);
$board->niceDrawing($obj); //will call the draw method of Circle.
$board->niceDrawing($obj2); //will call the draw method of Rectangle.
?>
  PHP的面向對象編程
  純對象論者認為PHP不是真正的面向對象語言,這是對的。PHP是一種混合語言,你可以用面向對象或傳統結構編程的方法來使用它。對於大型工程,然而你可能或需要使用純面向對象方法來定義類,並在你的工程中只使用對象和類。越來越大的工程通過使用面向對象的方法會獲得益處,面向對象工程非常容易維持,容易理解並且重用。這是軟件工程的基本。使用這些概念在網站設計中是未來成功的關鍵。
  PHP中的高級面向對象技術
  在回顧面向對象的基本概念之後,我將介紹一些更高級的技術。
  串行化
  PHP並不支持持久性對象,在面向對象語言中持久性對象是一些經過應用程序多次調用仍然保持其狀態和功能的對象,這意味著有一種能保存對象到文件或數據庫中然後重新裝載對象。這種機制稱之為串行化。PHP 有一個串行化函數,可以在對象中調用,串行化函數返回一個字符串代表這個對象。然後串行化函數保存的是成員數據而不是成員函數。
  在PHP4中,如果你串行化一個對象到字符串 $s, 然後刪除此對象,再反串行化對象到 $obj, 你仍然可以調用對象的方法函數。但我不推薦這種方法,這因為(a)這種功能在將來不一定支持(b)這導致一種幻象,如果你保存串行化對象到磁盤並退出程序。將來重新運行此腳本時你不能反串行化此對象並希望對象的方法函數仍有效,因為串行化出來的字符串並沒有表示任何成員函數。最後,串行化保存對象的成員變量在PHP中非常有用,僅僅如此. (你可以串行化聯合數組和數組到磁盤裡)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved