Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Refactor Framework to Package-Based Monorepo Structure

Aperta
#418 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
20/100
Tipo di issue
Refactoring
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
php
Ambito
backend

Direzione di ricerca

Inizia esaminando la struttura attuale di src/, le fasi proposte di packages/ e l’autoloading di composer.json nella root. Segui la checklist di migrazione da Core fino ad App Glue, quindi esegui la suite di test per verificare lo spostamento. Il lavoro è completato quando i packages/ pianificati esistono, src/ è stato rimosso, l’autoloading è aggiornato e i test passano.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.
Lingua principale
PHP
Stelle
36
Fork
22
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di quantum-php/framework

Tutte le issue di quantum-php/framework

Issue simili

Altre issue su PHP

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.