{
    "href": "/post/2026/04/23/response-interop-last-call-for-public-review/",
    "relId": "2026/04/23/response-interop-last-call-for-public-review",
    "title": "Response-Interop: Last Call for Public Review",
    "author": "pmjones",
    "tags": [
        {
            "href": "/tag/programming/",
            "relId": "programming",
            "title": "Programming",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        },
        {
            "href": "/tag/php/",
            "relId": "php",
            "title": "PHP",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        },
        {
            "href": "/tag/interop/",
            "relId": "interop",
            "title": "Interop",
            "author": null,
            "created": "2025-02-03 20:11:59 UTC",
            "updated": [
                "2025-02-03 20:11:59 UTC"
            ],
            "markup": "markdown"
        }
    ],
    "created": "2026-04-23 14:25:04 UTC",
    "updated": [
        "2026-04-23 14:25:04 UTC"
    ],
    "markup": "markdown",
    "html": "<p>The <a href=\"https://github.com/response-interop/interface\">Response-Interop</a> standard interface package has just been released at <a href=\"https://github.com/response-interop/interface/releases/tag/1.0.0-beta2\">beta2</a>; this is (I hope) a last call for public review before it goes \"stable.\"</p>\n<p><a href=\"https://github.com/response-interop/interface\">Response-Interop</a> provides interoperable interfaces to encapsulate, buffer, and send server-side response values in PHP 8.4 or later, in order to reduce the global mutable state and inspection problems that exist with the PHP response-sending functions. It reflects, refines, and reconciles the common practices identified within several <a href=\"https://github.com/response-interop/interface/blob/1.x/README-RESEARCH.md\">pre-existing projects</a> to define these interfaces:</p>\n<ul>\n<li>\n<p><a href=\"https://github.com/response-interop/interface#responsestruct\"><em>ResponseStruct</em></a> encapsulates the server response status line, headers, and body.</p>\n</li>\n<li>\n<p><a href=\"https://github.com/response-interop/interface#responseheaderscollection\"><em>ResponseHeadersCollection</em></a> encapsulates the headers for the response, including affordances for cookie management.</p>\n</li>\n<li>\n<p><a href=\"https://github.com/response-interop/interface#responsebodyhandler\"><em>ResponseBodyHandler</em></a> affords management of non-string, resource-intensive, or header-modifying content.</p>\n</li>\n<li>\n<p><a href=\"https://github.com/response-interop/interface#responsecookiehelperservice\"><em>ResponseCookieHelperService</em></a> affords conversion of cookie representations to and from strings and arrays.</p>\n</li>\n<li>\n<p><a href=\"https://github.com/response-interop/interface#responsesenderservice\"><em>ResponseSenderService</em></a> affords sending the server response.</p>\n</li>\n<li>\n<p><a href=\"https://github.com/response-interop/interface#responsethrowable\"><em>ResponseThrowable</em></a> extends <a href=\"https://php.net/Throwable\"><em>Throwable</em></a> to mark an <a href=\"https://php.net/Throwable\"><em>Exception</em></a> as response-related.</p>\n</li>\n<li>\n<p><a href=\"https://github.com/response-interop/interface#responsetypealiases\"><em>ResponseTypeAliases</em></a> provides PHPStan type aliases to aid static analysis.</p>\n</li>\n</ul>\n<p>The <a href=\"https://github.com/response-interop/impl/tree/1.x/src\">reference implementations</a> demonstrate how the interfaces can be used.</p>\n<p>If you have to deal with server-side responses and are interested an interoperable set of interfaces, please offer your comments and criticism as <a href=\"https://github.com/response-interop/interface/issues\">issues or PRs out at Github</a>.</p>\n<hr>\n"
}
