PHP學習筆記

1.PHP不支持多重繼承,但是可以爲一個類聲明多個接口。一個類可以在繼承自一個基類的同時,實現多個接口,例如:
  class MyCar extends Car implements Interface1,Interface2 {}

2.契約式編程是指在編寫類之前事先聲明接口的一種編程實踐。可以用來增強封裝性,優化工作流。
  例如:類A和類B在交互時使用了一個唯一的接口I,這個接口就可以被看做是一個契約,然後可以將創建A類的任務交給程序員甲,將創建B類的任務交給程序員乙,甲乙之間只須遵循這個契約來編碼,不需要他們在超出I接口的範圍之外進行合作。

3.instanceof操作符檢查的三件事情:
  (1).實例是否是某個特定類型;
  (2).實例是否從某個特定類型繼承;
  (3).實例或者它的任何祖先是否實現了特定的接口。

4.PHP6在“self::”、“parent::”的基礎上,新增了“static::”作用域,這個限定符會在代碼執行之前立即計算出繼承層次結構上最後那個類的成員(這個過稱被稱爲“延遲綁定”),可以實現在父類中調用子類的方法,這在以前的版本中是不可能的。

5.什麼時候需要使用靜態方法,什麼時候需要使用非靜態方法?
  一個原則是:如果某個方法不包含$this變量,則使用靜態方法,如果不需要類的實例,可以使用靜態類。
  靜態類的使用是有爭議的,因爲它違背了IoC(控制反轉)設計原則,IoC設計原則試圖在OOP中去掉所有的相互依賴現象,使對象具有更好的多態性和封裝性,能夠更容易地測試某個組件。
  “靜態”特性從本質上講,是定義了兩個類之間的綁定關係,因爲類的名稱是硬編碼的,類之間通過名稱綁定在一起,使得單獨測試某個組件變得困難。
  不過,大多數PHP應用程序最終都沒有采用IoC設計原則,靜態特性的使用應該被優先考慮。

6.模式的兩個作用:
  (1).幫助我們定義負責完成特定任務的對象(稱爲類的“職責”)。
  (2).允許我們全部修改掉某個類而不用修改與這個類打交道的代碼(稱爲類的“多態性”)。

7.單件模式的三要素:
  (1).必須有一個構造函數,並且必須是私有的(private)。
  (2).必須有一個保存類實例的靜態成員變量。
  (3).必須有一個訪問這個實例的公共的靜態方法。
  另外,爲了防止PHP語言中可以複製對象從而破壞單一職責這個漏洞,還應該增加一個私有的__clone()方法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章