作者 karlet

feat:增加协程httpserver

@@ -16,11 +16,11 @@ class SimpleServer @@ -16,11 +16,11 @@ class SimpleServer
16 $requestInfo = [ 16 $requestInfo = [
17 'path' => $request->server['path_info'], 17 'path' => $request->server['path_info'],
18 'uri' => $request->server['request_uri'], 18 'uri' => $request->server['request_uri'],
19 - 'get' => $request->get ? $request->get : [],  
20 - 'post' => $request->post ? $request->post : [], 19 + 'get' => $request->get ?: [],
  20 + 'post' => $request->post ?: [],
21 'method' => $request->getMethod(), 21 'method' => $request->getMethod(),
22 - 'header' => $request->header ? $request->header : [],  
23 - 'cookie' => $request->cookie ? $request->cookie : [], 22 + 'header' => $request->header ?: [],
  23 + 'cookie' => $request->cookie ?: [],
24 ]; 24 ];
25 $simpleRequest = new SimpleRequest($requestInfo); 25 $simpleRequest = new SimpleRequest($requestInfo);
26 if ($simpleRequest->path == '/favicon.ico' || $simpleRequest->uri == '/favicon.ico') { 26 if ($simpleRequest->path == '/favicon.ico' || $simpleRequest->uri == '/favicon.ico') {
  1 +<?php
  2 +namespace Jiaoyin;
  3 +use Swoole\Http\Request;
  4 +use Swoole\Http\Response;
  5 +use Swoole\Coroutine\Http\Server;
  6 +
  7 +class SimpleServerCoroutine
  8 +{
  9 + private Server $httpServer;
  10 + public function __construct($host, $port, $ssl = false)
  11 + {
  12 + $this->httpServer = new Server($host, $port, $ssl);
  13 + }
  14 + public function router($path, $callback){
  15 + $this->httpServer->handle($path, function (Request $request, Response $response) use ($callback) {
  16 + $requestInfo = [
  17 + 'path' => $request->server['path_info'],
  18 + 'uri' => $request->server['request_uri'],
  19 + 'get' => $request->get ?: [],
  20 + 'post' => $request->post ?: [],
  21 + 'method' => $request->getMethod(),
  22 + 'header' => $request->header ?: [],
  23 + 'cookie' => $request->cookie ?: [],
  24 + ];
  25 + $simpleRequest = new SimpleRequest($requestInfo);
  26 + $res = call_user_func($callback, $simpleRequest);
  27 + if(!$res){
  28 + $response->end();
  29 + }else{
  30 + $response->end($res);
  31 + }
  32 + });
  33 + }
  34 +
  35 + public function start(){
  36 + $this->httpServer->start();
  37 + }
  38 +}
  39 +