RFC: remove AspectKernel::getInstance() service-locator coupling from runtime classes
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 15/100
Direzione di ricerca
Start from the singleton at src/Core/AspectKernel.php:74,94-101 and the five call sites named: InterceptorInjector.php:31,137-141, AbstractInterceptor.php:145, PointcutReference.php:61, FilterInjectorTransformer.php:88, MagicConstantTransformer.php:86. Read how generated proxies and cached files call the static entry points before sketching the proposed Go\Core\Runtime holder. This is an RFC that needs design discussion first, so done means an agreed design that keeps the woven-code static surface stable across a cache warm.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
AspectKernel is a classic singleton (protected static ?self $instance, final protected function __construct() — src/Core/AspectKernel.php:74,94-101), and five runtime classes statically pull the container out of it:
src/Aop/Framework/InterceptorInjector.php:31,137-141src/Aop/Framework/AbstractInterceptor.php:145src/Aop/Pointcut/PointcutReference.php:61src/Instrument/Transformer/FilterInjectorTransformer.php:88src/Instrument/Transformer/MagicConstantTransformer.php:86
This blocks parallel kernels, embedding (e.g. a Symfony bundle with its own lifecycle), and test isolation.
Proposed design (for discussion)
- Introduce an explicit
Go\Core\Runtimeholder bound once at kernel boot; woven code and runtime classes receive it (or the container) by injection instead ofAspectKernel::getInstance()->getContainer(). - Keep
getInstance()as a thin deprecated BC shim delegating to the bound runtime. - Decide the woven-code contract carefully: generated proxies reference these entry points by name, so the static surface that cached files call must stay stable across a cache warm.
Effort L, risk med-high (public API + woven code shape). Needs design discussion before implementation. Related: the advisor-cache RFC removes two of these call sites on its own.
- Lingua principale
- PHP
- Stelle
- 1.7k
- Fork
- 166
- Merge medio
- 19h 39m
- PR unite (30g)
- 48
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
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 goaop/framework
-
Enhancement Performance
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
goaop/framework#747 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Enhancement Performance To Be Discussed
Difficoltà 3/5 Mezza giornata Idoneità per principianti 55/100
I maintainer di solito rispondono entro 1 giorno
-
Feature
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 1 giorno
-
Bug Known Issue
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
goaop/framework#696 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 5/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di goaop/framework
Issue simili
-
bug review needed
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
OpenMage/magento-lts#5816 ·
I maintainer di solito rispondono entro 2 giorni
-
priority:low type:docs
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
crazy-goat/rabbit-stream#958 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
nextcloud/richdocuments#6250 ·
I maintainer di solito rispondono entro 1 giorno
-
sync-en
Difficoltà 1/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
sync-en
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno