From d039a5d62a9ac6ababae70d9d96422ca59f2b2d4 Mon Sep 17 00:00:00 2001 From: Brett Parson Date: Fri, 21 Aug 2026 13:55:37 -0500 Subject: Scaffold miniroute routing/middleware kernel --- docs/adr/0002-attribute-based-route-declaration.md | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 docs/adr/0002-attribute-based-route-declaration.md (limited to 'docs/adr/0002-attribute-based-route-declaration.md') diff --git a/docs/adr/0002-attribute-based-route-declaration.md b/docs/adr/0002-attribute-based-route-declaration.md new file mode 100644 index 0000000..d1d4c79 --- /dev/null +++ b/docs/adr/0002-attribute-based-route-declaration.md @@ -0,0 +1,24 @@ +# ADR 0002: Attribute-Based Route Declaration + +- Status: Accepted +- Date: 2026-08-17 + +## Context + +Routes need a home that does not grow linearly in a central composition root. + +## Decision + +Routes are declared with method-specific PHP attributes (`Get`, `Post`, `Put`, +`Patch`, `Delete`) on controller methods. A reflection-based `RouteLoader` +compiles them into `RouteDef` objects. `Middleware` is a repeatable attribute +valid on classes and methods. + +Matching precedence is deterministic: literal segments sort before +`{parameter}` segments, so registration order is irrelevant. + +## Consequences + +- Adding a route touches only the controller. +- The loader must be covered by tests (reflection is where mistakes hide). +- Precedence is explicit rather than dependent on registration order. -- cgit v1.2.3