PHP面向物件程式設計(1)基礎
阿新 • • 發佈:2018-12-04
一、面向物件OOP(Oriented Object Programming)
- 面向過程的程式設計
-
- 將要實現的功能描述為一個從一開始到結束的連續的“步驟(過程)”。
- 一次逐步完成這些步驟。如果步驟比較大,又可以將該步驟細分為子步驟,以此類推。
- 程式從頭開始執行一直到結尾並得到手續的結果。
2. 面向物件的程式設計
-
- 將要實現的功能描述為一個“物件/物體”完成的任務一一實現也是如此:功能的實現都是依賴於一個實體的“行動/操作/動作”。
- 完成該最終功能的過程中需要實現其他中間功能(過程)則再去呼叫其他物件來實現該中間功能
- 整個系統的完成看做是一個一個物件在發揮各自的“能力”並在內部進行協調有序的呼叫過程。
3. 基本概念
1).類和物件
-
- 類:類是現實世界或思維世界中的實體在計算機中的反映,它將資料以及這些資料上的操作封裝在一起。
- 物件:物件是具有類型別的變數。類和物件是面向物件程式設計技術中的最基本的概念。
- 關係:類是物件的抽象,而物件是類的具體例項。類是抽象的,不佔用記憶體,而物件是具體的,佔用儲存空間。類是用於建立物件的藍圖,它是一個定義包括在特定型別的物件中的方法和變數的軟體模板。
2).類中成員
(1)、一般屬性
-
-
- 屬性是定義在類中的變數
- 定義:[訪問修飾符] $變數名 [= 賦值(初值)];//賦值只能是一個“直接值”或常量
- 使用形式:物件名->$變數名
-
(2)、一般方法
-
-
- 屬性是定義在類中的函式
- 定義:[訪問修飾符] function 函式名(形參 1, 形參 2, ...) {語句塊}
- 使用形式:物件名->函式名
- 方法中$thisi關鍵字有特定含義:表示呼叫該方法的物件
- 獲取$this的所屬類:get_class($this)
-
(3)、靜態屬性
-
-
- 僅隸屬於類,通過類名直接使用
- 定義:[訪問修飾符] static $靜態屬性名 [= 賦值(初值)];//賦值只能是一個“直接值”或常量
- 使用形式:類名::$靜態屬性名
-
(4)、靜態方法
-
-
- 僅隸屬於類的函式,通過類名直接呼叫(新版php可以使用物件名來呼叫)
- 定義形式:[訪問修飾符] static function 靜態方法名(形參 1, 形參 2, ...) {語句塊}
- 使用形式:類名::靜態方法名(實參 1, 實參 2, ...);//實參和形參一一對應
- self關鍵字:用在方法中,表示該方法所在的類
- static關鍵字:代替self關鍵字的位置,除了具有self作用外,還具有更靈活的作用,那就是所謂的“後期靜態繫結”
- 注意1:$this在靜態方法中不能使用
- 注意2:靜態方法不能呼叫非靜態方法
- 注意3:靜態方法不用使用非靜態屬性
-
(5)、類常量
-
-
- 隸屬於類的常量
- 定義形式:const 常量名 = 初值;//必須賦值
- 使用:類名(物件名)::常量名
-
3)、示例:
<?php //定義一個類:圓 class circle { const PI = 3.14;//常量PI private $radius = 1;//半徑 //設定半徑 public function setRadius($radius) { $this->radius = $radius; } //計算圓的面積並返回結果 public function area() { return circle::PI*$this->radius*$this->radius; } //返回常量PI的靜態函式 public static function displayPI() { return circle::PI; // return $this->radius;//error不能呼叫非靜態屬性 } //顯示半徑對應圓面積資訊 public function display() { echo "半徑是".$this->radius."的圓的面積為:".$this->area()."<br />"; } } //測試 $cir1 = new circle(); $cir1->setRadius(3); $cir1->display(); echo "PI:".circle::displayPI()."<br />"; ?>