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

action-hook插件

v1.0.2 版本
2022-09-06 版本更新時間
4738 安裝
5 star

簡介

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

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

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

安裝

composer require webman/action-hook

使用

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

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

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

beforeAction說明

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

afterAction說明

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

特別注意

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

贊助商