fix container and coroutine

This commit is contained in:
crazywhalecc
2022-08-14 18:24:59 +08:00
committed by Jerry Ma
parent 8be7207c3c
commit da6000b4da
6 changed files with 40 additions and 7 deletions

View File

@@ -90,9 +90,9 @@ class ContainerServicesProvider
{
// $context = Context::$context[zm_cid()];
$container->instance(HttpRequestEvent::class, $event);
$container->alias('http.request.event', HttpRequestEvent::class);
$container->alias(HttpRequestEvent::class, 'http.request.event');
$container->instance(ServerRequestInterface::class, $event->getRequest());
$container->alias('http.request', ServerRequestInterface::class);
$container->alias(ServerRequestInterface::class, 'http.request');
// $container->instance(Request::class, $context['request']);
// $container->instance(Response::class, $context['response']);
$container->bind(ContextInterface::class, Context::class);

View File

@@ -32,6 +32,7 @@ class HttpEventListener
{
// 注册容器
resolve(ContainerServicesProvider::class)->registerServices('request', $event);
// TODO: 这里有个bug如果是用的Workerman+Fiber协程的话有个前置协程挂起这里获取到的Event是被挂起的Event对象触发两次事件才能归正
// 跑一遍 BindEvent 绑定了 HttpRequestEvent 的注解
$handler = new AnnotationHandler(BindEvent::class);
$handler->setRuleCallback(function (BindEvent $anno) {

View File

@@ -8,9 +8,10 @@ class ZMUtil
{
/**
* 获取 composer.json 并转为数组进行读取使用
* @param null|string $path 路径
*/
public static function getComposerMetadata(): ?array
public static function getComposerMetadata(?string $path = null): ?array
{
return json_decode(file_get_contents(SOURCE_ROOT_DIR . '/composer.json'), true);
return json_decode(file_get_contents(($path ?? SOURCE_ROOT_DIR) . '/composer.json'), true);
}
}