iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
自我挑戰組

我推的Laravel系列 第 19

【Day-18】我推的Laravel-進階篇-Extend & Implement

  • 分享至 

  • xImage
  •  

簡介

class A extends B implements C

不少的檔案都可以看到類似的結構
class 之前簡單介紹過
今天稍微介紹Laravel(php)中的extends、implements

Extend

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

Implements,可以翻作實現,也就是A實現interface C的功能
前面的篇章有Hybrid的範例,Implements不只可以一個C,可以D、F、G
Implements的用法除了前面提到的DI、Service Provider都是基於Implements

就這樣,沒了?
是的,如果你有看過前幾篇,應該可以從例子中基本認識Implements
再來就是實作和觀摩別人的Code了

總結

這篇讓筆者能夠初步了解繼承和實現,能讓新手在未來看到時不會茫然
延伸的還有trait、abstract class等等,有興趣可以在自行延伸
Peace


上一篇
【Day-17】我推的Laravel-進階篇-Model Relation & N+1 Query問題
下一篇
【Day-19】我推的Laravel-進階篇-Session & Cookie
系列文
我推的Laravel31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言