webman 发布 1.4.6

walkor

主要功能特性及变更如下,感谢各位热心开发者的提交

默认关闭控制器复用

利用命令composer create-project workerman/webman 新建的webman项目 app.controller_reuse 配置将默认为
false,开发者仍然可以手动将其设置为true开启控制器复用。

此变动不影响老项目。

提示
很多开发者习惯了传统框架每个请求都重新初始化一个控制器的模式,所以官方默认将控制器复用关闭。
关闭控制器复用后helloworld压测性能损失约10%左右,但真实业务下性能损失可以忽略不计。

支持控制器参数注入

例子

<?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 的贡献

helpers.php里路径相关函数支持子路径参数

例如

public_path('css/main.css');
//相当于
public_path() . '/css/main.css';

感谢 377960738 的贡献

自带的Container支持简单的依赖注入

参见 https://github.com/walkor/webman-framework/pull/69
感谢 krissss 的贡献

url驼峰支持短线(-)格式

例如 /user/login-check 等同于 /user/loginCheck 等同于 /user/logincheck

其它更多变更请参考 github

1043 18 0
18个回答

不败少龙

威武霸气

  • 暂无评论
江月闲谈

👍🏻👍🏻👍🏻👍🏻

  • 暂无评论
咸鱼.php

我爱老大

  • 暂无评论
yzh52521

666

  • 暂无评论
稚出

👍🏻👍🏻👍🏻👍🏻

  • 暂无评论
深林孤鹰

越来越完美

  • 暂无评论
luojianqun

支持控制器参数注入了,赞

  • 暂无评论
光尘

👍🏻👍🏻👍🏻👍🏻

  • 暂无评论
深林孤鹰

升级以后就报错:

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}
  • walkor 18天前

    更新到master试下,composer require workerman/webman-framework dev-master

  • 深林孤鹰 18天前

    不行,报错了,加了 --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

    • Root composer.json requires workerman/webman-framework dev-master, found workerman/webman-framework[dev-master] but these were not loaded, likely because it conflicts with another require.
      Problem 2
    • webman/think-orm is locked to version v1.0.7 and an update of this package was not requested.
    • webman/think-orm v1.0.7 requires workerman/webman-framework ^1.2.1 -> found workerman/webman-framework[v1.2.1, ..., v1.4.6] but it conflicts with your root composer.json require (dev-master).

    Installation failed, reverting ./composer.json and ./composer.lock to their original content.

  • walkor 18天前

    直接到vendor/workerman/下删除 webman-framework,然后执行 git clone https://github.com/walkor/webman-framework

  • 深林孤鹰 18天前

    好啦,谢谢大神,原来是composer还没更新^^

liziyu

🐂🐃

  • 暂无评论
青衣煮茶

老大威武,支持

  • 暂无评论
Van Chin

@walkor

支持 支持控制器参数注入

是否可以支持 路由模型绑定 绑定呢

https://learnku.com/docs/laravel/9.x/routing/12209#route-model-binding

路径中的参数直接绑定成一个 模型

<?php

use support\Request;
use App\Models\Admin;

public function show(Request $request,$id) {

        $admin = $this->model->find($id);

        $data = [
            'data' => $admin,
            'message' => '获取数据成功!'
        ];

        return $this->rsp(...$data);
   }

// 变成下面这种

public function show(Request $request,Admin $admin) {

        $data = [
            'data' => $admin,
            'message' => '获取数据成功!'
        ];

        return $this->rsp(...$data);

   }
  • oliusha 17天前

    第一个例子不就是你说的这个?

  • walkor 17天前

    暂时没考虑加入这个特性

  • nitron 17天前

    第一个例子不就是你说的这个?

Tinywan

越来越好

  • 暂无评论
JackDx

支持~

  • 暂无评论
chenh

支持

  • 暂无评论
折雷

牛的

  • 暂无评论
nnicde

👍

  • 暂无评论
张一

666

  • 暂无评论
🔝