From 0ea23728b30b837b3aa579b7b0b4849fb4d93aa8 Mon Sep 17 00:00:00 2001 From: Greg Bowler Date: Tue, 10 Mar 2026 22:55:27 +0000 Subject: [PATCH] feature: Headers implements TypeSafeGetter closes #5 --- src/Header/Headers.php | 6 +++++- test/phpunit/Header/HeadersTest.php | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Header/Headers.php b/src/Header/Headers.php index a1e5e2d..6d8ee3c 100644 --- a/src/Header/Headers.php +++ b/src/Header/Headers.php @@ -2,13 +2,17 @@ namespace Gt\Http\Header; use Countable; +use Gt\TypeSafeGetter\NullableTypeSafeGetter; +use Gt\TypeSafeGetter\TypeSafeGetter; use Iterator; /** * @implements Iterator * @SuppressWarnings("TooManyPublicMethods") */ -class Headers implements Iterator, Countable { +class Headers implements Iterator, Countable, TypeSafeGetter { + use NullableTypeSafeGetter; + const COMMA_HEADERS = [ // These cookies use commas within the value, so can't be comma separated. "cookie-set", diff --git a/test/phpunit/Header/HeadersTest.php b/test/phpunit/Header/HeadersTest.php index cb11d29..17e7b28 100644 --- a/test/phpunit/Header/HeadersTest.php +++ b/test/phpunit/Header/HeadersTest.php @@ -3,6 +3,7 @@ use Gt\Http\Header\HeaderLine; use Gt\Http\Header\Headers; +use Gt\TypeSafeGetter\TypeSafeGetter; use PHPUnit\Framework\TestCase; class HeadersTest extends TestCase { @@ -99,6 +100,12 @@ public function testGet() { self::assertEquals(self::HEADER_ARRAY["Content-Type"], $headers->get("content-type")); } + public function testTypeSafeGetterInterface():void { + $headers = new Headers(self::HEADER_ARRAY); + self::assertInstanceOf(TypeSafeGetter::class, $headers); + self::assertSame(self::HEADER_ARRAY["Date"], $headers->getString("date")); + } + public function testGetMultiple() { $headers = new Headers(self::HEADER_ARRAY); $headers->add("Accept", "application/json", "application/xml");