本站電子書

您可以在這些電子書店找到本站電子書: Google Play 圖書iBooks StoreHyReadReadmooPubu
===>>>本站推出學習遊戲意見調查<<<===《如何自學程式設計》入選 Google Play 台灣地區2016年度最佳書籍

PHP 快速導覽 - 類別與物件

類別 (class) 是物件 (object) 的模板,物件的所有功能都由類別設置。



典型的類別設計如下
class class_name {
    // 屬性定義
    access_label $var = 'something';

    // 方法定義
    access_label function displayVar() {
        // 方法內容
    }    
}


利用關鍵字 (keyword) class 宣告類別名稱,其後的大括弧為類別的宣告內容,裡頭用存取標籤 (access label) access_label 區分成員的權限。存取標籤有三種,分別是 publicprivateprotected ,這三個標籤也都屬於關鍵字。


public 成員可以由所有使用物件的地方自由呼叫, private 成員則限制在類別中呼叫,也就是類別的成員才可以使用 private 成員, protected 成員的使用範圍與 private 成員相同,但是 private 成員不能被繼承 (inheritance) , protected 成員則可以被繼承。


成員可以是屬性 (property) 或方法 (method) ,屬性就是是專屬於物件的變數 (variable) ,方法等同於函數 (function) ,一樣用 function 定義,只限物件可以使用,沒有設定存取標籤的方法預設為 public


舊版本的 PHP 設定屬性需要用到另一個關鍵字 var , PHP 5 以後不需要使用 var ,如果只用 var 設定屬性,就等於 public


使用 private 成員可達到把資料封裝 (encapsulation) 的目的,此為物件導向程式設計 (object-oriented programming) 的主要特性之一。


舉一例如下
<?php
class Demo {
    private $a = 11;
    private $b = 22;
    
    function do_something() {
        return $this->a + $this->b;
    }
}

$demo = new Demo();
echo $demo->do_something();

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:class01.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


此例宣告了類別 Demo ,裡頭有三個成員,兩個屬性與一個方法
class Demo {
    private $a = 11;
    private $b = 22;
    
    function do_something() {
        return $this->a + $this->b;
    }
}


$this 是在類別中特別的變數,用來存取同類別的其他成員,需要使用 -> 運算子
function do_something() {
    return $this->a + $this->b;
}


自定義的屬性名稱應避免與 $this 相同,以免造成歧義。


建立物件要用 new 關鍵字,後面接類別名稱與小括弧
$demo = new Demo();


物件變數呼叫方法同樣使用使用 -> 運算子
echo $demo->do_something();


此例執行結果如下



中英文術語對照
類別class
物件object
關鍵字keyword
存取標籤access label
繼承inheritance
屬性property
方法method
變數variable
函數function
封裝encapsulation


您可以繼續參考
類別與物件


相關目錄
回 PHP 快速導覽
回 PHP 教材
回首頁


參考資料
http://www.php.net/manual/en/oop5.intro.php
http://www.php.net/manual/en/language.oop5.basic.php
http://www.php.net/manual/en/language.oop5.properties.php
http://www.php.net/manual/en/language.oop5.visibility.php

沒有留言: