国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

action-hook插件

v1.0.2 版本
2022-09-06 版本更新時(shí)間
4835 安裝
5 star

簡(jiǎn)介

在傳統(tǒng)框架中,每個(gè)請(qǐng)求都會(huì)實(shí)例化一次控制器,所以很多開發(fā)者__construct()方法中做一些請(qǐng)求前的準(zhǔn)備工作。
而webman由于控制器常駐內(nèi)存,無(wú)法在__construct()里做這些工作。此插件提供了更好的解決方案beforeAction() afterAction(),它不僅讓開發(fā)者可以介入到請(qǐng)求前的流程中,而且還可以介入到請(qǐng)求后的處理流程中。

特別注意
webman>=1.4.0,不需要安裝此插件,可以在config/app.php里設(shè)置'controller_reuse' => false關(guān)閉控制器復(fù)用,讓每個(gè)請(qǐng)求都重新初始化控制器,這樣每個(gè)請(qǐng)求都會(huì)執(zhí)行控制器的__construct()方法。
webman>=1.4.0時(shí),在關(guān)閉控制器復(fù)用的情況下,本插件將無(wú)法使用。

注意
插件需要webman>=1.2,如果你的版本低于1.2可以參考這里手動(dòng)配置action-hook

安裝

composer require webman/action-hook

使用

<?php
namespace app\controller;
use support\Request;
class Index
{
    /**
     * 該方法會(huì)在請(qǐng)求前調(diào)用 
     */
    public function beforeAction(Request $request)
    {
        echo 'beforeAction';
        // 若果想終止執(zhí)行Action就直接返回Response對(duì)象,不想終止則無(wú)需return
        // return response('終止執(zhí)行Action');
    }

    /**
     * 該方法會(huì)在請(qǐng)求后調(diào)用
     */
    public function afterAction(Request $request, $response)
    {
        echo 'afterAction';
        // 如果想串改請(qǐng)求結(jié)果,可以直接返回一個(gè)新的Response對(duì)象
        // return response('afterAction'); 
    }

    public function index(Request $request)
    {
        return response('index');
    }
}

beforeAction說(shuō)明

  • 在當(dāng)前控制器被執(zhí)行前調(diào)用
  • 框架會(huì)傳遞一個(gè)Request對(duì)象給beforeAction,開發(fā)者可以從中獲得用戶輸入
  • 如需終止執(zhí)行當(dāng)前控制器,則只需要在beforeAction里返回一個(gè)Response對(duì)象,比如return redirect('/user/login');
  • 無(wú)需終止執(zhí)行當(dāng)前控制器時(shí),不要返回任何數(shù)據(jù)

afterAction說(shuō)明

  • 在當(dāng)前控制器被執(zhí)行后調(diào)用
  • 框架會(huì)傳遞Request對(duì)象以及Response對(duì)象給afterAction,開發(fā)者可以從中獲得用戶輸入以及控制器執(zhí)行后返回的響應(yīng)結(jié)果
  • 開發(fā)者可以通過(guò)$response->rawBody()獲得響應(yīng)內(nèi)容
  • 開發(fā)者可以通過(guò)$response->getHeader()獲得響應(yīng)的header頭
  • 開發(fā)者可以通過(guò)$response->getStatusCode()獲得響應(yīng)的http狀態(tài)碼
  • 開發(fā)者可利用$response->withBody() $response->header() $response->withStatus()串改響應(yīng),也可以創(chuàng)建并返回一個(gè)新的Response對(duì)象替代原響應(yīng)

特別注意

aciton-hook是基于中間件開發(fā)的,action-hook會(huì)注冊(cè)一個(gè)全局中間件,根據(jù)中間件執(zhí)行順序,action-hook中間件會(huì)優(yōu)先于你的應(yīng)用中間件執(zhí)行,這可能與開發(fā)者預(yù)期不符,解決辦法是手動(dòng)將/config/plugin/action-hook/middleware.php中的中間件配置移動(dòng)到config/middleware.php的對(duì)應(yīng)的應(yīng)用中間件配置末尾。

贊助商