Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Refactor Framework to Package-Based Monorepo Structure

オープン
#418 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
20/100
issue の種類
リファクタリング
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
php
領域
backend

調査の方向性

まず現在の src/ のレイアウト、提案されている packages/ のフェーズ、およびルートの composer.json の autoloading を確認します。Core から App Glue までの migration checklist に沿って作業し、その後 test suite を実行して移行を検証します。完了の条件は、計画された packages/ が存在し、src/ が削除され、autoloading が更新され、tests が成功することです。

索引モデルが issue の本文から書いたものです。

説明

enhancement

Description

Currently, the framework is a monolithic library with a mix of "Libraries", "Modules", and core components in src/. This structure creates tight coupling and unclear boundaries (e.g., Config depending on Loader which depends on App).

We propose moving to a Monorepo Structure using a packages/ directory. This will allow for:

  1. Strict Decoupling: Each package has its own src and explicit dependencies.
  2. Clearer Architecture: Separation of Core (Kernel) from App (Adapters) and Features (Http, Database).
  3. Future-Proofing: Easier to extract/publish standalone components.

Proposed Structure

The src/ directory will be dissolved into packages/.

/packages
  ├── Core/          (Bootstrap: App Kernel, Container, Config, Loader, Env, Hook)
  ├── App/           (Glue: Web/Console Adapters, Traits)
  ├── Http/          (Request, Response, Middleware)
  ├── Console/       (Commands, Output)
  ├── Pipeline/      (New Shared Pipe Builder)
  ├── Database/      (ORM, Migrations)
  ├── Security/      (Csrf, Encryption, Hasher)
  ├── ...            (See full plan for Auth, Session, etc.)

Synergy with Issue #373 (App Bootstrapping)

This refactoring directly supports the goals of Issue #373:

  • Boot Pipeline: The new packages/Pipeline component enables the "Boot Stages" logic.
  • Explicit Kernel: Moving App, Container, and Loader to packages/Core physically defines the "Application Execution Boundary".
  • DI Ownership: Centralizing Container in Core makes it the clear owner of service lifetimes.

Critical Changes

  • Split App: src/App/App.php moves to packages/Core. src/App/Adapters moves to packages/App. This resolves the circular dependency between the Kernel and the Http layer.
  • Config in Core: src/Config moves to packages/Core to resolve dependencies on Loader and Di.
  • Security Grouping: Csrf, Encryption, and Hasher are grouped under packages/Security.

Migration Checklist

  • Create packages/ directory structure.
  • Phase 1: Core: Move App, Di, Environment, Hook, Loader, Config, Tracer to packages/Core.
  • Phase 2: Features: Move Auth, Database, Session, View, Validation to packages/*.
  • Phase 3: Http/Console: Move Http, Console, Router to packages/*.
  • Phase 4: App Glue: Move Adapters and Traits to packages/App.
  • Phase 5: Cleanup: Remove empty src/ directories.
  • Phase 6: Wiring: Update root composer.json autoloading to map Quantum\ to these new paths.
  • Run tests to verify the move.
主要言語
PHP
スター
36
フォーク
22
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

quantum-php/framework のほかの issue

quantum-php/framework の issue をすべて見る

似ている issue

PHP の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。