workerman 接收 http 客户端发来的消息时报错:Cannot use object of type Workerman\Protocols\Http\Request as array
使用 workerman 创建一个处理 http 客户端消息时,报错:Cannot use object of type Workerman\Protocols\Http\Request as array
。
以下为使用的 demo:
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$http_workder = new Worker("http://0.0.0.0:8351");
$http_workder->count = 4;
$http_workder->onMessage = function ($connection, $data) {
print_r($data);
$id = $data['get']['id'];
$connection->send("Hello, world!");
};
Worker::runAll();
报错位置在 $id = $data['get']['id'];
,大概表示的是获取 get 类型的请求参数 id 值。
参考 workman 官方文档 请求 - Http 服务,原来是新版本 4.x 获取请求参数的方式变了。
use Workerman\Worker;
require_once './Workerman/Autoloader.php';
$worker = new Worker('http://0.0.0.0:8080');
$worker->onMessage = function($connection, $request)
{
// $request为请求对象
$id = $request->get('id');
echo $id;
$connection->send("hello");
};
// 运行worker
Worker::runAll();
因为新版本 4.x 与 3.x 使用方法并不匹配,所以如果使用的是新版本 4.x,以数组形式获取参数的方式就得废弃了。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。