Refactor Framework to Package-Based Monorepo Structure
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 20/100
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
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:
- Strict Decoupling: Each package has its own
srcand explicit dependencies. - Clearer Architecture: Separation of
Core(Kernel) fromApp(Adapters) andFeatures(Http, Database). - 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/Pipelinecomponent enables the "Boot Stages" logic. - Explicit Kernel: Moving
App,Container, andLoadertopackages/Corephysically defines the "Application Execution Boundary". - DI Ownership: Centralizing
ContainerinCoremakes it the clear owner of service lifetimes.
Critical Changes
- Split
App:src/App/App.phpmoves topackages/Core.src/App/Adaptersmoves topackages/App. This resolves the circular dependency between the Kernel and the Http layer. - Config in Core:
src/Configmoves topackages/Coreto resolve dependencies onLoaderandDi. - Security Grouping:
Csrf,Encryption, andHasherare grouped underpackages/Security.
Migration Checklist
- Create
packages/directory structure. - Phase 1: Core: Move
App,Di,Environment,Hook,Loader,Config,Tracertopackages/Core. - Phase 2: Features: Move
Auth,Database,Session,View,Validationtopackages/*. - Phase 3: Http/Console: Move
Http,Console,Routertopackages/*. - Phase 4: App Glue: Move
AdaptersandTraitstopackages/App. - Phase 5: Cleanup: Remove empty
src/directories. - Phase 6: Wiring: Update root
composer.jsonautoloading to mapQuantum\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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di quantum-php/framework
-
routing testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
quantum-php/framework#547 ·
-
view
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
quantum-php/framework#542 ·
-
enhancement http
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
quantum-php/framework#565 · 1 commento ·
-
components view
Difficoltà 5/5 Più di una settimana Idoneità per principianti 42/100
quantum-php/framework#551 ·
-
Add explicit @version special route token support for API major versioning within a single module Apertarouting
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
quantum-php/framework#550 ·
Tutte le issue di quantum-php/framework
Issue simili
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
Automattic/safe-publish#594 ·
-
HttpClient
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
symfony/symfony-docs#23092 ·
-
sync-en
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
sync-en
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
-
Перевод устарел
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100