laminas/laminas-diactoros

Numeric header names handling in PSR-7 message objects

Xerkus opened this issue · 0 comments

Xerkus commented

PHP has little known quirk where array converts string keys consisting of integer value to integers . See PHP bug 80309 for more details.

Numeric header names failing type validation during ServerRequest instance creation from SAPI environment were reported in #11 and #157 handled it by filtering out numeric headers during server request creation from PHP globals.

However such headers could still be added to PSR-7 messages via withAddedHeader(string $name) and withHeader(string $name) methods, for example using string name like '1234'. Those headers will be an integer type when returned from getHeaders(), potentially causing ripple effect across user codebase expecting strongly typed string argument.

Since this behavior is universal across all implementations, @weierophinney will work with PHP-FIG to provide PSR-7 errata detailing expected handling of such headers. This is a tracking issue until such resolution is available.