鍍金池/ 問答/PHP/ thinkphp5 中的應(yīng)用公共文件怎么理解?

thinkphp5 中的應(yīng)用公共文件怎么理解?

我的后臺(tái)模塊 admin,所有控制器都需要操作鑒權(quán),或者構(gòu)建操作菜單,或者其它一些公共操作

在忽略中間鍵的前提下:

我以前的寫法都是,寫一個(gè)“母版”控制器common,然后所有的控制器繼承這個(gè)母版控制器,在母版中做這些操作,我總覺得這樣的寫法蹩腳 !

我不是很理解面向?qū)ο笾械膽?yīng)用公共文件,當(dāng)然thinkphp 里的 common.php 這種自定義函數(shù),這個(gè)不算。

求分析 …

回答
編輯回答
愚念

舉個(gè)例子
公共模塊

public function checkmsg ($phone,$msg);{
    if(手機(jī)驗(yàn)證碼正確){
            returun true;
    }else{
         throw new Exception("驗(yàn)證碼錯(cuò)誤");
    }
}

home模塊 的一個(gè)注冊模塊要用到驗(yàn)證碼功能

public function login($msg,$phone,$password){
    公共模塊下的checkmsg($phone,$msg);
    //后面就是添加這個(gè)用戶的信息到數(shù)據(jù)等操作。。。
}

admin模塊 一個(gè)需要通過手機(jī)號(hào)碼驗(yàn)證管理員身份的功能

public function checkauthority($msg,$phone){
     公共模塊下的checkmsg($phone,$msg);
    //確認(rèn)是管理員后就可以進(jìn)行XXX操作了
}

這樣就可以共同用一個(gè)東西

2017年2月12日 04:53
編輯回答
墨小白

我說的不一定對(duì),但是想跟你交流下,我認(rèn)為應(yīng)用公共文件包括前段文件個(gè)后端文件,后端的就是一些控制器的公共方法,比如說怎刪改查,前段的就是一些頁頭頁尾之類的

2017年1月15日 20:16
編輯回答
凹凸曼

這種最常見用采用的
BaseController
然后的
AdminController extend BaseController

這樣的顯然樓主是不想要的

那么來一點(diǎn)“設(shè)計(jì)模式”

我們可以把依賴先注入到堆棧中,要用的時(shí)候再觸發(fā)唄。

在tp3.2 和tp5中都可以用

這里用TP5

amespace app\index\behavior;

use think\Request;

class Test 
{
    public function run(Request $request, $params)
    {
        // 行為邏輯
    }
}

在應(yīng)用目錄下面或者模塊的目錄下面定義tags.php文件來統(tǒng)一定義行為,定義格式如下

return [
    //index目錄下
    'app_init'=> [
        'app\\index\\behavior\\CheckAuth',
    ],
]

直接執(zhí)行行為

// 執(zhí)行 app\index\behavior\CheckAuth行為類的run方法 并引用傳入params參數(shù)
$result = Hook::exec('app\\index\\behavior\\CheckAuth',$params);

詳情見 鉤子和行為 :https://www.kancloud.cn/manua...

2017年5月24日 07:58