Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Refactor WebAppAdapter::start() and ConsoleAppAdapter::start() into structured runtime pipelines

未关闭
#537 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
35/100
Issue 类型
重构
描述清晰度
基本清楚
活跃度
冷清
技术栈
php
领域
backend

调研方向

从 src/App/Adapters/WebAppAdapter.php 和 src/App/Adapters/ConsoleAppAdapter.php 开始,然后跟踪相关 trait 和 src/App/BootPipeline.php。将当前的 start() 流程与 RouteDispatcher.php 和 MiddlewareManager.php 进行比较,以梳理运行时状态和职责。完成的标准是两个 adapter 都使用专用的运行时 pipeline 和 context 对象,同时保留所列出的 web 和 console 行为;根据需要更新测试。

由索引模型根据 Issue 内容生成。

描述

runtime

Summary

Refactor WebAppAdapter::start() and ConsoleAppAdapter::start() so runtime execution is no longer handled as flat sequences of loosely connected method calls.

Introduce structured runtime pipelines for web and console flows, similar in spirit to boot stages, so execution becomes explicit, extensible, and ready for future lifecycle hooks.

Why

The constructor already has a clear staged boot flow through BootPipeline, but runtime execution is still handled ad hoc.

In WebAppAdapter::start(), current responsibilities are mixed together in one method:

  • preflight handling
  • route resolution
  • not found handling
  • language loading
  • debug info logging
  • view cache setup
  • cached response lookup
  • route dispatch
  • middleware execution
  • response sending
  • request cleanup

In ConsoleAppAdapter::start(), runtime execution is also flat:

  • core command registration
  • app command registration
  • command validation
  • command execution

This makes both runtime flows harder to reason about and leaves no clean structural boundaries for future lifecycle hooks.

Goal

Create proper runtime execution structures for both web and console adapters before introducing broader lifecycle hooks.

Runtime flow should become stage-based rather than remaining collections of ad hoc method calls.

Proposed Direction

Introduce dedicated runtime pipelines instead of reusing BootPipeline directly.

Suggested runtime structures:

  • RequestPipeline
  • RequestContext
  • ConsolePipeline
  • ConsoleContext

These should carry evolving runtime state rather than relying on loose locals and inline control flow.

Suggested Web Runtime Stages

A reasonable first breakdown of the current web flow is:

  • HandlePreflightStage
  • ResolveRouteStage
  • HandleRouteNotFoundStage
  • PrepareRequestStage
  • DispatchRequestStage
  • SendResponseStage
  • CleanupRequestStage

Notes:

  • PrepareRequestStage should cover:
    • language loading
    • debug info logging
    • view cache setup
  • DispatchRequestStage should cover:
    • cached response lookup
    • route dispatch
    • middleware execution

Suggested Console Runtime Stages

A reasonable first breakdown of the current console flow is:

  • RegisterCoreCommandsStage
  • RegisterAppCommandsStage
  • ValidateCommandStage
  • RunCommandStage

If needed, command registration can later be collapsed into a single preparation stage, but the first refactor should prioritize clarity.

Scope

This ticket is about refactoring runtime structure for both adapters.

It should not yet define the full lifecycle hook contract. That should come after runtime flow has proper structural boundaries.

Acceptance Criteria

  • WebAppAdapter::start() is refactored into a structured runtime pipeline
  • ConsoleAppAdapter::start() is refactored into a structured runtime pipeline
  • runtime state is carried through dedicated runtime context objects rather than loose local variables
  • web runtime responsibilities such as language loading and view cache handling are preserved in the new structure
  • console runtime responsibilities such as command registration, validation, and execution are preserved in the new structure
  • the new runtime structures are suitable for later lifecycle hook integration
  • tests are updated as needed

Notes

Relevant code:

  • src/App/Adapters/WebAppAdapter.php
  • src/App/Adapters/ConsoleAppAdapter.php
  • src/App/Traits/WebAppTrait.php
  • src/App/Traits/ConsoleAppTrait.php
  • src/Router/RouteDispatcher.php
  • src/Middleware/MiddlewareManager.php
  • src/App/BootPipeline.php

This ticket should be completed before introducing broader runtime lifecycle hooks.

主要语言
PHP
星标
36
派生
22
PR 合并指标
30 天内没有已合并 PR

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

quantum-php/framework 的其他 Issue

查看 quantum-php/framework 的全部 Issue

相似的 Issue

更多 PHP Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。