首頁  >  文章  >  後端開發  >  PHP類別系列 (一)

PHP類別系列 (一)

黄舟
黄舟原創
2017-02-06 09:50:161734瀏覽

寫在文前:

春節將近,明天就回家啦,心情無比激動,忙了一年終於可以陪陪家人了。外地人離京後,北京宛如一座'空城',今天同事們聊這個事,猛然想起司馬遷的一句名言:“天下熙熙,皆為利來;天下攘攘,皆為利往”,現在利的方向應該就是親情了,風箏收線,無論過去的一年你經歷了什麼,也都要收拾好心情回家過年。提前祝福各位新年快樂~

春節期間我也會實踐對自己的承諾,每周至少發一篇文章。

同時也要感謝And1讀者提出的寶貴建議,大家如果有什麼好的建議也可以告訴我哦。

迴歸正文:今天說說PHP裡的類。

1 什麼是類

類就是將有些東西歸為一類,例如貓、狗、豬,它們都是動物,我們就可以歸為一類。類別是抽象的,不具體的,如果將類別具體就是類別的對象,貓、狗就是動物類別中的一個對象。學生也可以當作一類,那麼小紅就是學生類別裡的一個物件(開發中的術語也叫'實例' )

粗略點說,類別就是很多方法的集合(其實還有屬性,屬性只是配合方法實作),這些方法是你在程式中常會用到的一些邏輯或演算法,將他們包進類別裡面,可以提升程式的效率,減少程式碼的重複。

2 類別的定義

每個類別的定義都以關鍵字 class 開頭,後面跟著類別名稱,後面跟著一對花括號,裡麵包含有類別的屬性與方法的定義。

<?php
class SimpleClass
{
    // 声明类的属性
    public $var = &#39;a default value&#39;;

    // 声明类的方法
    public function displayVar() {
        echo $this->var;
    }
}
?>

當一個方法在類別定義內部被呼叫時,有一個可用的偽變數 $this。 $this 是一個到主叫物件的引用。其實就是指這個類別(代名詞)

3 類別的實例

實例也就是具體的一個物件。 要建立一個類別的實例,必須使用 new 關鍵字。

如果在 new 之後跟著的是一個包含有類別名稱的字串,則該類別的一個實例被建立。

// 创建一个实例
<?php
$instance = new SimpleClass();

// 也可以这样做:
$className = &#39;Foo&#39;;
$instance = new $className(); // Foo()
?>

4 類的繼承

可以理解成孩子繼承父親的基因。

① 一個類別可以在宣告中用 extends 關鍵字繼承另一個類別的方法和屬性。

② PHP不支援多重繼承,一個類別只能繼承一個基底類別(其實就是一個小孩只能有一個父親)。

③ 被繼承的方法和屬性可以透過用同樣的名字重新聲明被覆蓋(可以理解為兒子改良了父親原有的基因)。但是如果父類別定義方法時使用了 final,則該方法不可被覆寫。可以透過 parent:: 來存取被覆寫的方法或屬性。

④ 當覆寫方法時,參數必須保持一致否則 PHP 將發出 E_STRICT 等級的錯誤訊息。但建構函數例外,建構函數可在被覆蓋時使用不同的參數。

// 简单的类继承
<?php
class ExtendClass extends SimpleClass
{
    // 重新定义父类的方法
    function displayVar()
    {
        echo "继承类\n";
        parent::displayVar();
    }
}

$extended = new ExtendClass();
$extended->displayVar();
?>

5 類別名稱的解析 

使用 ClassName::class 你可以取得一個字串,包含了類別 ClassName 的完全限定名稱。

// 类名的解析
<?php
namespace NS {
    class ClassName {
    }

    echo ClassName::class;
}
?>

// 以上输出结果: NS/ClassName

以上就是PHP類系列 (一)的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn