因?yàn)閠pframe沒有更改任何thinkphp5的特性,所以你完全可以寫thinkphp5任何的語法來進(jìn)行二次開發(fā)
題外話:一個系統(tǒng)好與不好,不能全說是什么好就是什么好,幾個方面來看,性能?可擴(kuò)展性?可讀性?代碼之間的耦合度?可維護(hù)性?等等...
你寫的代碼,李四可能會接手,張三寫的代碼,你也可能會接手,這是最平常不過的事情了,那么這個時候上面的幾個方面除了可讀性重要一點(diǎn)外,其它貌似都顯得不是很重要,要想讓一個代碼所有人都能很快速的上手,那就得遵循一些代碼規(guī)范了
但是為了不破壞整個系統(tǒng)的結(jié)構(gòu),我建議按如下規(guī)范對TPFrame進(jìn)行二次開發(fā)
1、控制層
只參與數(shù)據(jù)轉(zhuǎn)發(fā),服務(wù)調(diào)用,數(shù)據(jù)渲染之類的操作
2、服務(wù)層
數(shù)據(jù)驗(yàn)證,邏輯調(diào)用,后期數(shù)據(jù)處理操作
3、邏輯層
數(shù)據(jù)庫CURD操作,邏輯操作
4、驗(yàn)證層
數(shù)據(jù)合法性校驗(yàn)
5、模型層
自動完成、數(shù)據(jù)修改等操作(其實(shí)真正的CURD也是在模型層)
6、視圖層
頁面展示
所有層的基類都存在于common模塊層,這樣的目的是為了共用一些數(shù)據(jù),也便于每個層自己去擴(kuò)展自己的功能
類名:ControllerBase
所有控制器類都繼承于ControllerBase
打開ControllerBase類,你可以看到里面有很多的一些控制器里面要用的常量,可能會用到的一些操作都在里面。
寫法:
<pre> <?php namespace app\frontend\controller; class Index extends FrontendBase { ... }</pre>
可以看到這里繼承是FrontendBase,而基本沒有繼承ControllerBase,為什么?我上面說了,是為了便于每個模塊的擴(kuò)展,而FrontendBase類
<pre> <?php namespace app\frontend\controller; use app\common\controller\ControllerBase;
class FrontendBase extends ControllerBase { } </pre>
直接可以看到,該類直接繼承于ControllerBase,也沒有進(jìn)行任何的功能操作
服務(wù)器的基類在common模塊sevice里的ServiceBase,所有的服務(wù)類也要繼承于它,這里同樣的道理,都采用的是間接的繼承方式
ServiceBase > FrontendBase > ..
后面繼承前面的,一個基本的服務(wù)類
<pre><?php // +---------------------------------------------------------------------- // | Author: yaoyihong <510974211@qq.com> // +----------------------------------------------------------------------
namespace app\frontend\service; use \tpfcore\Core;
class User extends FrontendBase { .... } </pre>
邏輯層的方式類似,繼承關(guān)系如下:
Model>ModelBase>LogicBase>FrontendBase
可以看出logic實(shí)際上繼承的最終類是Model,所以邏輯層的操作CURD,實(shí)際上操作的是model層,一個邏輯層代碼案例:
<pre><?php // +---------------------------------------------------------------------- // | Author: yaoyihong <510974211@qq.com> // +----------------------------------------------------------------------
namespace app\frontend\logic; use \tpfcore\Core;
class User extends FrontendBase { .... } </pre>
其它的層相對來說比較簡單,這里就不介紹了
更多建議: