国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP學習筆記之面向對象設計

2024-05-04 21:53:45
字體:
來源:轉載
供稿:網友

   面向對象設計是php程序開發中一個很重要的內容塊,如果你想成為高級php程序員我們必須知道面向對象設計具體用法與寫法。

  維護簡單 模塊化是面向對象編程中的一個特征。實體被表示為類和同一名字空間中具有相同功能的類,我們可以在名字空間中添加一個類而不會影響該名字空間的其他成員。

  可擴充性 面向對象編程從本質上支持擴充性。如果有一個具有某種功能的類,就可以很快地擴充這個類,創建一個具有擴充的功能的類。

  代碼重用 由于功能是被封裝在類中的,并且類是作為一個獨立實體而存在的,提供一個類庫就非常簡單了。

  它比較適合多人合作來開發項目,所以現在很多大中型網站都選擇了用OOP來開發。

  本文主要講解了用php做面向對象編程的最基本的方法和代碼實例,如何創建一個class和如何生成一個class的實例等等,只是一個入門,非常的簡單,要想深學這點是遠遠不夠的。只適合php的初學者

  public 表示全局,類內部外部子類都可以訪問;

  private表示私有的,只有本類內部可以使用;

  protected表示受保護的,只有本類或子類或父類中可以訪問;

  - 數據抽象和信息隱藏

  - 繼承

  - 多態性

  在PHP中使用類進行封裝的辦法:

  當然你可以用你自己的辦法,但有一個標準總是好的。

  PHP中類的數據成員使用 "var" 定義,數據成員是沒有類型直到被賦值。一個數據成員可能是一個 integer、數組、聯合數組(associative array)或甚至對象(object). 方法在類里定義成函數,在方法里存取數據成員,你必須使用$this->name 這樣的辦法,否則對方法來說是一個函數的局部變量。

  使用 new 來創建一個對象

  然后使用成員函數

  setX 成員函數將 5 賦給對象(而不是類)obj 中成員變量, 然后 getX 返回值 5.

  你也可以用對象引用來存取成員變量,例如:$obj->x=6; 然而,這不一種好的面向對象編程的方法。我堅持你應使用成員函數來設置成員變量的值和通過成員函數來讀取成員變量。如果你認為成員變量是不可存取的除了使用成員函數的辦法,你將成為一個好的面向對象程序員。 但不幸的是PHP本身沒有辦法聲明一個變量是私有的,所以允許糟糕的代碼存在。

  在 PHP 中繼承使用 extend 來聲明。

  這樣類 "Another" 的對象擁有父類的所用成員變量及方法函數,再加上自己的成員變量及成員函數。如:

  多重繼承不被支持,所以你不能讓一個類繼承多個類。

  在繼承類中你可以重新定義來重定義方法,如果我們在 "Another" 重新定義 getX,那么我們不再能存取 "Something" 中的成員函數 getX. 同樣,如果我們在繼承類中聲明一個和父類同名的成員變量,那么繼承類的變量將隱藏父類的同名變量。

  你可以定義一個類的構造函數, 構造函數是和類同名的成員函數,在你創建類的對象時被調用。

  所以可以用如下方法創建對象:

  構造函數自動賦值 5 給成員變量 x, 構造函數和成員函數都是普通的PHP函數,所以你可以使用缺省參數。

  然后:

  缺省參數的定義方法和 C++ 一樣,因此你不能傳一個值給 Y 但讓 X 取缺省值,實參的傳遞是從左到右,當沒有更多的實參時函數將使用缺省參數。

  只有當繼承類的構造函數被調用后,繼承類的對象才被創建,父類的構造函數沒有被調用,這是PHP不同其他面向對象語言的特點,因為構造函數調用鏈是面向對象編程的特點。如果你想調用基類的構造函數,你不得不在繼承類的構造函數中顯式調用它。這樣它能工作是因為在繼承類中父類的方法全部可用。

  ?>

  多態性。

  ?>

  和封裝有關的魔術方法:

  __set():是直接設置私有成員屬性值時,自動調用的方法

  __get():是直接獲取私有成員屬性值時,自動調用的方法

  __isset(); 是直接isset查看對象中私有屬性是否存時自動調用這個方法

  __unset(); 是直接unset刪除對象中私有屬性時,自動調用的方法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 栖霞市| 长武县| 镇原县| 明水县| 蒙山县| 沾益县| 革吉县| 博罗县| 余干县| 海门市| 建德市| 罗甸县| 阳山县| 英吉沙县| 宜川县| 万山特区| 绵竹市| 门头沟区| 巴彦淖尔市| 四子王旗| 普格县| 昌图县| 柳河县| 房产| 新巴尔虎右旗| 灵璧县| 台州市| 若羌县| 双城市| 高碑店市| 绥棱县| 涞源县| 东莞市| 监利县| 仪征市| 遂川县| 伊春市| 慈溪市| 涞源县| 山西省| 盐亭县|