寫在文前:
春節將近,明天就回家啦,心情無比激動,忙了一年終於可以陪陪家人了。外地人離京後,北京宛如一座'空城',今天同事們聊這個事,猛然想起司馬遷的一句名言:“天下熙熙,皆為利來;天下攘攘,皆為利往”,現在利的方向應該就是親情了,風箏收線,無論過去的一年你經歷了什麼,也都要收拾好心情回家過年。提前祝福各位新年快樂~
春節期間我也會實踐對自己的承諾,每周至少發一篇文章。
同時也要感謝And1讀者提出的寶貴建議,大家如果有什麼好的建議也可以告訴我哦。
迴歸正文:今天說說PHP裡的類。
1 什麼是類
類就是將有些東西歸為一類,例如貓、狗、豬,它們都是動物,我們就可以歸為一類。類別是抽象的,不具體的,如果將類別具體就是類別的對象,貓、狗就是動物類別中的一個對象。學生也可以當作一類,那麼小紅就是學生類別裡的一個物件(開發中的術語也叫'實例' )
粗略點說,類別就是很多方法的集合(其實還有屬性,屬性只是配合方法實作),這些方法是你在程式中常會用到的一些邏輯或演算法,將他們包進類別裡面,可以提升程式的效率,減少程式碼的重複。
2 類別的定義
每個類別的定義都以關鍵字 class 開頭,後面跟著類別名稱,後面跟著一對花括號,裡麵包含有類別的屬性與方法的定義。
<?php class SimpleClass { // 声明类的属性 public $var = 'a default value'; // 声明类的方法 public function displayVar() { echo $this->var; } } ?>
當一個方法在類別定義內部被呼叫時,有一個可用的偽變數 $this。 $this 是一個到主叫物件的引用。其實就是指這個類別(代名詞)
3 類別的實例
實例也就是具體的一個物件。 要建立一個類別的實例,必須使用 new 關鍵字。
如果在 new 之後跟著的是一個包含有類別名稱的字串,則該類別的一個實例被建立。
// 创建一个实例 <?php $instance = new SimpleClass(); // 也可以这样做: $className = 'Foo'; $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)!