Revert "改名"
This reverts commit fdf58326
This commit is contained in:
@@ -935,7 +935,6 @@ if (!function_exists('di')) {
|
|||||||
/**
|
/**
|
||||||
* @param string $className
|
* @param string $className
|
||||||
* @return mixed
|
* @return mixed
|
||||||
* @throws ReflectionException
|
|
||||||
*/
|
*/
|
||||||
function di(string $className): mixed
|
function di(string $className): mixed
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class DateFormat
|
|||||||
if ($time === null) {
|
if ($time === null) {
|
||||||
$time = time();
|
$time = time();
|
||||||
} else if (is_numeric($time)) {
|
} else if (is_numeric($time)) {
|
||||||
$length = strlen(floatval($time));
|
$length = strlen((string)$time);
|
||||||
if ($length != 10 && $length != 13) {
|
if ($length != 10 && $length != 13) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -86,9 +86,7 @@ class DateFormat
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$time = date('t', $time);
|
return date('t', $time);
|
||||||
|
|
||||||
return $time;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ class Dtl extends Component
|
|||||||
/**
|
/**
|
||||||
* Dtl constructor.
|
* Dtl constructor.
|
||||||
* @param $params
|
* @param $params
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function __construct($params)
|
public function __construct($params)
|
||||||
{
|
{
|
||||||
@@ -35,9 +36,6 @@ class Dtl extends Component
|
|||||||
*/
|
*/
|
||||||
public function toArray(): array
|
public function toArray(): array
|
||||||
{
|
{
|
||||||
if (!is_array($this->params)) {
|
|
||||||
return ArrayAccess::toArray($this->params);
|
|
||||||
}
|
|
||||||
return $this->params;
|
return $this->params;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
namespace Kiri\Core;
|
namespace Kiri\Core;
|
||||||
|
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
use ReturnTypeWillChange;
|
||||||
|
|
||||||
class HashMap implements \ArrayAccess
|
class HashMap implements \ArrayAccess
|
||||||
{
|
{
|
||||||
@@ -62,7 +63,7 @@ class HashMap implements \ArrayAccess
|
|||||||
* @param mixed $offset
|
* @param mixed $offset
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function offsetExists($offset): bool
|
public function offsetExists(mixed $offset): bool
|
||||||
{
|
{
|
||||||
return isset($this->lists[$offset]);
|
return isset($this->lists[$offset]);
|
||||||
}
|
}
|
||||||
@@ -72,7 +73,7 @@ class HashMap implements \ArrayAccess
|
|||||||
* @param mixed $offset
|
* @param mixed $offset
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
#[Pure] public function offsetGet($offset): mixed
|
#[Pure] public function offsetGet(mixed $offset): mixed
|
||||||
{
|
{
|
||||||
return $this->get($offset);
|
return $this->get($offset);
|
||||||
}
|
}
|
||||||
@@ -82,7 +83,8 @@ class HashMap implements \ArrayAccess
|
|||||||
* @param mixed $offset
|
* @param mixed $offset
|
||||||
* @param mixed $value
|
* @param mixed $value
|
||||||
*/
|
*/
|
||||||
public function offsetSet($offset, $value)
|
#[ReturnTypeWillChange]
|
||||||
|
public function offsetSet(mixed $offset, mixed $value)
|
||||||
{
|
{
|
||||||
$this->put($offset, $value);
|
$this->put($offset, $value);
|
||||||
}
|
}
|
||||||
@@ -91,7 +93,8 @@ class HashMap implements \ArrayAccess
|
|||||||
/**
|
/**
|
||||||
* @param mixed $offset
|
* @param mixed $offset
|
||||||
*/
|
*/
|
||||||
public function offsetUnset($offset)
|
#[ReturnTypeWillChange]
|
||||||
|
public function offsetUnset(mixed $offset)
|
||||||
{
|
{
|
||||||
unset($this->lists[$offset]);
|
unset($this->lists[$offset]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ class Help
|
|||||||
/**
|
/**
|
||||||
* @param $xml
|
* @param $xml
|
||||||
* @return mixed
|
* @return mixed
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public static function toArray($xml): mixed
|
public static function toArray($xml): mixed
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class Json
|
|||||||
* @param bool $asArray
|
* @param bool $asArray
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public static function decode($data, $asArray = true): mixed
|
public static function decode($data, bool $asArray = true): mixed
|
||||||
{
|
{
|
||||||
if (is_array($data) || is_numeric($data)) {
|
if (is_array($data) || is_numeric($data)) {
|
||||||
return $data;
|
return $data;
|
||||||
@@ -55,14 +55,13 @@ class Json
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $code
|
* @param $code
|
||||||
* @param string $message
|
* @param string|array $message
|
||||||
* @param array $data
|
* @param array|int $data
|
||||||
* @param int $count
|
* @param int $count
|
||||||
* @param array $exPageInfo
|
* @param array $exPageInfo
|
||||||
* @return mixed
|
* @return string|bool
|
||||||
* @throws
|
|
||||||
*/
|
*/
|
||||||
public static function to($code, $message = '', $data = [], $count = 0, $exPageInfo = []): mixed
|
public static function to($code, string|array $message = '', array|int $data = [], int $count = 0, array $exPageInfo = []): string|bool
|
||||||
{
|
{
|
||||||
$params['code'] = $code;
|
$params['code'] = $code;
|
||||||
if (!is_string($message)) {
|
if (!is_string($message)) {
|
||||||
|
|||||||
@@ -108,7 +108,6 @@ class Container implements ContainerInterface
|
|||||||
/**
|
/**
|
||||||
* @param $class
|
* @param $class
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws ReflectionException
|
|
||||||
*/
|
*/
|
||||||
public function isInterface($class): bool
|
public function isInterface($class): bool
|
||||||
{
|
{
|
||||||
@@ -212,7 +211,6 @@ class Container implements ContainerInterface
|
|||||||
* @param $className
|
* @param $className
|
||||||
* @param $method
|
* @param $method
|
||||||
* @return array
|
* @return array
|
||||||
* @throws ReflectionException
|
|
||||||
*/
|
*/
|
||||||
public function getMethodAttribute($className, $method = null): array
|
public function getMethodAttribute($className, $method = null): array
|
||||||
{
|
{
|
||||||
@@ -228,7 +226,6 @@ class Container implements ContainerInterface
|
|||||||
* @param string $class
|
* @param string $class
|
||||||
* @param string|null $property
|
* @param string|null $property
|
||||||
* @return ReflectionProperty|ReflectionProperty[]|null
|
* @return ReflectionProperty|ReflectionProperty[]|null
|
||||||
* @throws ReflectionException
|
|
||||||
*/
|
*/
|
||||||
public function getClassReflectionProperty(string $class, string $property = null): ReflectionProperty|null|array
|
public function getClassReflectionProperty(string $class, string $property = null): ReflectionProperty|null|array
|
||||||
{
|
{
|
||||||
@@ -339,9 +336,6 @@ class Container implements ContainerInterface
|
|||||||
if (!isset($this->_parameters[$class])) {
|
if (!isset($this->_parameters[$class])) {
|
||||||
$this->_parameters[$class] = [];
|
$this->_parameters[$class] = [];
|
||||||
}
|
}
|
||||||
if (!isset($this->_parameters[$class][$method])) {
|
|
||||||
$this->_parameters[$class][$method] = [];
|
|
||||||
}
|
|
||||||
return $this->_parameters[$class][$method] = $parameters;
|
return $this->_parameters[$class][$method] = $parameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,7 +354,6 @@ class Container implements ContainerInterface
|
|||||||
/**
|
/**
|
||||||
* @param ReflectionMethod|ReflectionFunction $reflectionMethod
|
* @param ReflectionMethod|ReflectionFunction $reflectionMethod
|
||||||
* @return array
|
* @return array
|
||||||
* @throws ReflectionException
|
|
||||||
*/
|
*/
|
||||||
private function resolveMethodParameters(ReflectionMethod|ReflectionFunction $reflectionMethod): array
|
private function resolveMethodParameters(ReflectionMethod|ReflectionFunction $reflectionMethod): array
|
||||||
{
|
{
|
||||||
@@ -394,7 +387,6 @@ class Container implements ContainerInterface
|
|||||||
/**
|
/**
|
||||||
* @param $class
|
* @param $class
|
||||||
* @return ReflectionClass|null
|
* @return ReflectionClass|null
|
||||||
* @throws ReflectionException
|
|
||||||
*/
|
*/
|
||||||
public function getReflect($class): ?ReflectionClass
|
public function getReflect($class): ?ReflectionClass
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Kiri\Websocket;
|
||||||
|
|
||||||
|
class FdCollector
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public function set($fd)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Kiri\Websocket;
|
||||||
|
|
||||||
|
class Sender
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public function push($fd, $data)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function close($fd)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Kiri\Websocket;
|
||||||
|
|
||||||
|
use Http\Handler\DataGrip;
|
||||||
|
use Http\Handler\Router;
|
||||||
|
use Kiri\Abstracts\Component;
|
||||||
|
use Kiri\Server\Contract\OnOpenInterface;
|
||||||
|
use Psr\Container\ContainerExceptionInterface;
|
||||||
|
use Psr\Container\NotFoundExceptionInterface;
|
||||||
|
use ReflectionException;
|
||||||
|
use Server\Contract\OnCloseInterface;
|
||||||
|
use Server\Contract\OnHandshakeInterface;
|
||||||
|
use Server\Contract\OnMessageInterface;
|
||||||
|
use Swoole\Http\Request;
|
||||||
|
use Swoole\Http\Response;
|
||||||
|
use Swoole\WebSocket\CloseFrame;
|
||||||
|
use Swoole\WebSocket\Frame;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class Server extends Component implements OnHandshakeInterface, OnMessageInterface, OnCloseInterface
|
||||||
|
{
|
||||||
|
|
||||||
|
public Router $router;
|
||||||
|
|
||||||
|
|
||||||
|
public string $serverName = 'ws';
|
||||||
|
|
||||||
|
|
||||||
|
public mixed $callback = null;
|
||||||
|
|
||||||
|
|
||||||
|
public mixed $server;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws ContainerExceptionInterface
|
||||||
|
* @throws NotFoundExceptionInterface
|
||||||
|
* @throws ReflectionException
|
||||||
|
*/
|
||||||
|
public function init()
|
||||||
|
{
|
||||||
|
$this->router = $this->container->get(DataGrip::class)->get($this->serverName);
|
||||||
|
$handler = $this->router->find('/', 'GET');
|
||||||
|
if (is_int($handler) || is_null($handler)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$this->callback = $handler->callback[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \Swoole\Server $server
|
||||||
|
* @param int $fd
|
||||||
|
*/
|
||||||
|
public function onClose(\Swoole\Server $server, int $fd): void
|
||||||
|
{
|
||||||
|
if ($this->callback instanceof OnCloseInterface) {
|
||||||
|
$this->callback->onClose($server, $fd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param Response $response
|
||||||
|
*/
|
||||||
|
public function onHandshake(Request $request, Response $response): void
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if (!$this->callback instanceof OnHandshakeInterface) {
|
||||||
|
throw new \Exception('Page not found.');
|
||||||
|
}
|
||||||
|
$this->callback->onHandshake($request, $response);
|
||||||
|
|
||||||
|
$this->afterHandshake($request);
|
||||||
|
if ($this->server instanceof \Swoole\Coroutine\Http\Server) {
|
||||||
|
while (true) {
|
||||||
|
$data = $response->recv();
|
||||||
|
if ($data === '' || $data === false || $data instanceof CloseFrame) {
|
||||||
|
$this->onClose($this->server, $response->fd);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$this->onMessage($this->server, $data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (\Throwable $throwable) {
|
||||||
|
$response->status(500, $throwable->getMessage());
|
||||||
|
$response->end();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $request
|
||||||
|
*/
|
||||||
|
public function afterHandshake($request)
|
||||||
|
{
|
||||||
|
if (!($this->callback instanceof OnOpenInterface)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$this->callback->onOpen($this->server, $request);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \Swoole\Server $server
|
||||||
|
* @param Frame $frame
|
||||||
|
*/
|
||||||
|
public function onMessage(\Swoole\Server $server, Frame $frame): void
|
||||||
|
{
|
||||||
|
if ($this->callback instanceof OnMessageInterface) {
|
||||||
|
$this->callback->onMessage($server, $frame);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user