鍍金池/ 問(wèn)答/PHP  HTML/ 關(guān)于 php traits的使用

關(guān)于 php traits的使用

問(wèn)題描述

最近在做接口開(kāi)發(fā),突然有個(gè)想法是不是可以這樣:
將每個(gè)接口方法封裝traits,然后創(chuàng)建一個(gè)接口類(lèi),接口類(lèi)的作用是將traits接口組合起來(lái),組成完整接口;這樣在版本更新迭代的時(shí)候只需要替換相應(yīng)的traits就可以了;
這樣做可行嗎?或者有什么弊端嗎?

回答
編輯回答
耍太極

首先你的一個(gè)思維是很好的,就是利用traits復(fù)用代碼,traits本身設(shè)計(jì)解決PHP無(wú)法多繼承和代碼復(fù)用

不過(guò)你上面的設(shè)計(jì),我想到的一些問(wèn)題:

  1. 如何同時(shí)存在一個(gè)服務(wù)的不同版本(難道你又維護(hù)一個(gè)不同版本的traits)
  2. 如何你的類(lèi)只是繼承了不同功能traits,那為什么直接用相應(yīng)的基類(lèi)做,要用traits來(lái)做,這個(gè)問(wèn)題值得你思考
  3. traits在實(shí)際開(kāi)發(fā)中,更多的是充當(dāng)一些抽象的公用部分,比如一個(gè)抽象A類(lèi)和抽象B類(lèi), 他們可能同時(shí)要公用一些方法或什么,你可以用traits
  4. 你提出這個(gè)問(wèn)題的時(shí)候,我這邊感受到的是你更多要去思考的是怎么設(shè)計(jì)類(lèi)和怎么設(shè)計(jì)你的軟件架構(gòu)問(wèn)題
2018年5月14日 23:19