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

1.6升級指南

升級前請做好備份,執(zhí)行以下命令升級

composer config -g --unset repos.packagist
composer require -W workerman/webman-framework ^v1.6.11

webman-framework 發(fā)布1.6.0版本

新增特性

要求PHP>=8.0

支持通過控制器參數(shù)獲取輸入

<?php
namespace app\controller;
use support\Response;

class UserController
{
    public function create(string $name, int $age, float $balance, bool $vip, array $extension): Response
    {
        return json([
            'name' => $name,
            'age' => $age,
            'balance' => $balance,
            'vip' => $vip,
            'extension' => $extension,
        ]);
    }
}

訪問 /user/create?name=tom&age=18&balance=100.5&vip=1&extension[foo]=bar 得到結果

{
  "name": "tom",
  "age": 18,
  "balance": 100.5,
  "vip": true,
  "extension": {
    "foo": "bar"
  }
}

同時參數(shù)支持綁定類包括模型,例如

<?php
namespace app\controller;
use app\model\User;
class UserController
{
    public function create(User $user): int
    {
        $user->save();
        return $user->id;
    }
}

更多參考控制器參數(shù)綁定

支持控制器中間件

<?php
namespace app\controller;
use app\middleware\MiddlewareA;
use app\middleware\MiddlewareB;
use support\Request;
class IndexController
{
    protected $middleware = [
        MiddlewareA::class,
        MiddlewareB::class,
    ];
    public function index(Request $request): string
    {
        return 'hello';
    }
}

支持 Route::fallback()->middleware(...); 給4xx請求增加中間件

正常情況下404請求不會走任何中間件,從1.6.0版本開始可以給4xx請求設置中間件

Route::fallback(function(){
    return json(['code' => 404, 'msg' => '404 not found']);
})->middleware([
    app\middleware\MiddlewareA::class,
    app\middleware\MiddlewareB::class,
]);

支持 Route::disableDefaultRoute()關閉特定應用、控制器的默認路由

// 禁用主項目默認路由,不影響應用插件
Route::disableDefaultRoute();
// 禁用主項目的admin應用的路由,不影響應用插件
Route::disableDefaultRoute('', 'admin');
// 禁用foo插件的默認路由,不影響主項目
Route::disableDefaultRoute('foo');
// 禁用foo插件的admin應用的默認路由,不影響主項目
Route::disableDefaultRoute('foo', 'admin');
// 禁用控制器 [\app\controller\IndexController::class, 'index'] 的默認路由
Route::disableDefaultRoute([\app\controller\IndexController::class, 'index']);

更多參考文檔

支持 $request->setGet() $request->setPost() $request->setHeader() 覆蓋get post headers 數(shù)據(jù)

$request->get(); // 假設得到 ['name' => 'tom', 'age' => 18]
$request->setGet(['name' => 'tom']);
$request->get(); // 最終得到 ['name' => 'tom']
// 以下類似
$requset->setPost();
$request->setHeaders();

更多參考文檔

view() 支持省略模板參數(shù)以及絕對路徑

<?php
namespace app\controller;
use support\Request;
class UserController
{
    public function hello(Request $request)
    {
        // 等價于 return view('user/hello', ['name' => 'webman']);
        // 等價于 return view('/app/view/user/hello', ['name' => 'webman']);
        return view(['name' => 'webman']);
    }
}

其它配置及文件變動

新版本 config/server.php 的listen等配置移動到了 config/process.php 下,只影響 composer create-project 創(chuàng)建的新項目,老項目升級不影響。
新版本將 process 目錄移動到了 app/process ,只影響 composer create-project 創(chuàng)建的新項目,老項目升級不影響。

升級注意

如果之前的項目代碼不是很規(guī)范,可能會有一些兼容問題,主要問題如下:

檢查view()函數(shù)使用

檢查要升級的項目中view()是否有以/開頭的模板參數(shù),有的話把開頭的/去掉,例如

return view('/user/index');
// 需要改成
return view('user/index');

檢查自定義路由參數(shù)是否一致

Route::any('/user/{name}', function (Request $request, $myname) {
   return response($myname);
});
// 需要改成
Route::any('/user/{name}', function (Request $request, $name) {
   return response($name);
});

注意 $request 參數(shù)前面需要添加Request類型提示。

關閉composer代理

阿里云等composer鏡像代理有延遲,里面的包的版本可能不是最新的,導致升級出現(xiàn)問題,請執(zhí)行以下命令刪除composer代理,然后再升級

composer config -g --unset repos.packagist
編輯于2024-12-26 11:20:05 完善本頁 +發(fā)起討論
贊助商