主要功能特性及變更如下,感謝各位熱心開發(fā)者的提交
利用命令composer create-project workerman/webman
新建的webman項目 app.controller_reuse
配置將默認為
false
,開發(fā)者仍然可以手動將其設(shè)置為true
開啟控制器復用。
此變動不影響老項目。
提示
很多開發(fā)者習慣了傳統(tǒng)框架每個請求都重新初始化一個控制器的模式,所以官方默認將控制器復用關(guān)閉。
關(guān)閉控制器復用后helloworld
壓測性能損失約10%左右,但真實業(yè)務下性能損失可以忽略不計。
例子
<?php
namespace app\controller;
use app\model\User;
use support\Request;
class User
{
public function find(Request $request, User $user)
{
return $user->find(1);
}
}
感謝 377960738 的貢獻
例如
public_path('css/main.css');
//相當于
public_path() . '/css/main.css';
感謝 377960738 的貢獻
參見 https://github.com/walkor/webman-framework/pull/69
感謝 krissss 的貢獻
-
)格式例如 /user/login-check
等同于 /user/loginCheck
等同于 /user/logincheck
其它更多變更請參考 github
升級以后就報錯:
ArgumentCountError: Too few arguments to function Workerman\Protocols\Http\Request::__construct(), 0 passed in D:\Webman\vendor\workerman\webman-framework\src\Container.php on line 65 and exactly 1 expected in D:\Webman\vendor\workerman\workerman\Protocols\Http\Request.php:80
Stack trace:
#0 D:\Webman\vendor\workerman\webman-framework\src\Container.php(65): Workerman\Protocols\Http\Request->__construct()
#1 D:\Webman\vendor\workerman\webman-framework\src\App.php(423): Webman\Container->make('support\\Request')
#2 D:\Webman\vendor\workerman\webman-framework\src\App.php(342): Webman\App::resolveMethodDependencies('', Object(app\Request), Array, Object(ReflectionMethod))
#3 D:\Webman\vendor\workerman\webman-framework\src\App.php(147): Webman\App::Webman\{closure}(Object(app\Request))
#4 D:\Webman\vendor\workerman\workerman\Connection\TcpConnection.php(638): Webman\App->onMessage(Object(Workerman\Connection\TcpConnection), Object(app\Request))
#5 D:\Webman\vendor\workerman\workerman\Events\Select.php(311): Workerman\Connection\TcpConnection->baseRead(Resource id #166)
#6 D:\Webman\vendor\workerman\workerman\Worker.php(2463): Workerman\Events\Select->loop()
#7 D:\Webman\vendor\workerman\workerman\Worker.php(1449): Workerman\Worker->run()
#8 D:\Webman\vendor\workerman\workerman\Worker.php(1392): Workerman\Worker::forkWorkersForWindows()
#9 D:\Webman\vendor\workerman\workerman\Worker.php(557): Workerman\Worker::forkWorkers()
#10 D:\Webman\vendor\workerman\webman-framework\src\support\App.php(124): Workerman\Worker::runAll()
#11 D:\Webman\start.php(4): support\App::run()
#12 {main}
不行,報錯了,加了 --with-all-dependencies 依然報錯:
./composer.json has been updated
Running composer update workerman/webman-framework --with-all-dependencies
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
直接到vendor/workerman/下刪除 webman-framework,然后執(zhí)行 git clone https://github.com/walkor/webman-framework
@walkor
支持 支持控制器參數(shù)注入
是否可以支持 路由模型綁定
綁定呢
https://learnku.com/docs/laravel/9.x/routing/12209#route-model-binding
路徑中的參數(shù)直接綁定成一個 模型
<?php
use support\Request;
use App\Models\Admin;
public function show(Request $request,$id) {
$admin = $this->model->find($id);
$data = [
'data' => $admin,
'message' => '獲取數(shù)據(jù)成功!'
];
return $this->rsp(...$data);
}
// 變成下面這種
public function show(Request $request,Admin $admin) {
$data = [
'data' => $admin,
'message' => '獲取數(shù)據(jù)成功!'
];
return $this->rsp(...$data);
}