aboutsummaryrefslogtreecommitdiff
path: root/src/Http/RequestInterface.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Http/RequestInterface.php')
-rw-r--r--src/Http/RequestInterface.php31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/Http/RequestInterface.php b/src/Http/RequestInterface.php
new file mode 100644
index 0000000..fe54667
--- /dev/null
+++ b/src/Http/RequestInterface.php
@@ -0,0 +1,31 @@
+<?php
+
+declare(strict_types=1);
+
+namespace BrettParson\MiniRoute\Http;
+
+/**
+ * Minimal HTTP request contract the router needs.
+ *
+ * Applications keep their own concrete Request class and implement this
+ * interface. The router only reads method/path and injects route parameters
+ * via withParams(); everything else stays application-owned.
+ */
+interface RequestInterface
+{
+ public function method(): string;
+
+ public function path(): string;
+
+ /**
+ * Get a route parameter extracted by the router (e.g. {slug}).
+ */
+ public function param(string $name, string $default = ''): string;
+
+ /**
+ * Return a copy of the request with route parameters attached.
+ *
+ * @param array<string, string> $params
+ */
+ public function withParams(array $params): RequestInterface;
+}