class A extends B implements C
不少的檔案都可以看到類似的結構
class 之前簡單介紹過
今天稍微介紹Laravel(php)中的extends、implements
Extend,繼承,在程式語言中不僅是php,常會看到繼承
繼承是關於OOP的一門學問,這邊簡單帶讀者初步認識
如同字面上意思,class A繼承了B,B就是A的父類別,A就是B的子類別
A就可以有限制的使用B的變數和function等
限制是甚麼呢
private $postRepository;
public function store($data): void
{
}
裡面的public、private,還有上面沒寫到的protected,就是其限制
表头 | 外部 | 繼承的類別 (衍伸的類別) |
---|---|---|
public | 可見 | 可見 |
protected | 不可見 | 可見 |
private | 不可見 | 不可見 |
讀者有興趣可以新增一個新的CommonService
然後在PostService分別用extends、DI(依賴注入)或new CommonService
實驗兩者差別,之後可以依據情境設定
設定限制其中一項優點可以防止耦合,避免有相同名稱等(有興趣可以自行深入
Implements,可以翻作實現,也就是A實現interface C的功能
前面的篇章有Hybrid的範例,Implements不只可以一個C,可以D、F、G
Implements的用法除了前面提到的DI、Service Provider都是基於Implements
就這樣,沒了?
是的,如果你有看過前幾篇,應該可以從例子中基本認識Implements
再來就是實作和觀摩別人的Code了
這篇讓筆者能夠初步了解繼承和實現,能讓新手在未來看到時不會茫然
延伸的還有trait、abstract class等等,有興趣可以在自行延伸
Peace