<p dir="auto">As discussed <a href="https://github.com/symfony/symfony/pull/17379#issuecomment-171905787" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/17379/hovercard">here</a>, it may be the time to think about refactoring the <code class="notranslate">Request</code> and the <code class="notranslate">Response</code> classes to follow the <code class="notranslate">php-fig</code> standards.</p>
<p dir="auto">You can see this interfaces <a href="https://github.com/php-fig/http-message">here</a>.</p>
<p dir="auto">Message from <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iltar/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iltar">@iltar</a>:</p>
<blockquote>
<p dir="auto">Actually, I've been thinking of converting the current Request/Response objects to builders. Parameter converters etc are all working by setting values and the same goes for response listeners. By converting the ResponseBuilder and RequestBuilder into a "frozen" variant, it can also be compliant with PSR. This means that when modifying the request &gt; builder but your action &gt; PSR request. Same goes for the response, you can return a Response(Builder), which gets converted to a PSR Response if not already.</p>
</blockquote>
<p dir="auto">Naïve list gathered with grep. Let's make using each of these usable, standalone, in a PSR-7 centric app, or just check if there is something to do, or decide to not do it.</p>
<h2 dir="auto">May handle PSR-7:</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Bridge/Doctrine (see <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="98213202" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/15414" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/15414/hovercard?comment_id=126414399&amp;comment_type=issue_comment" href="https://github.com/symfony/symfony/issues/15414#issuecomment-126414399">#15414 (comment)</a>)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Bridge/Monolog</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Bridge/Swiftmailer (see <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="98213202" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/15414" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/15414/hovercard?comment_id=126696544&amp;comment_type=issue_comment" href="https://github.com/symfony/symfony/issues/15414#issuecomment-126696544">#15414 (comment)</a>)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Bridge/Twig</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Component/Asset</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Component/Debug (see <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="98228787" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/15415" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/15415/hovercard" href="https://github.com/symfony/symfony/pull/15415">#15415</a> and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="98332503" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/15418" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/15418/hovercard" href="https://github.com/symfony/symfony/pull/15418">#15418</a>)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Component/Form</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Component/Routing</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Component/Security/Core</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Component/Security/Csrf (see <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="98213202" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/15414" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/15414/hovercard?comment_id=126429803&amp;comment_type=issue_comment" href="https://github.com/symfony/symfony/issues/15414#issuecomment-126429803">#15414 (comment)</a>)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Component/Security/Http</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Component/Translation (see <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="98213202" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/15414" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/15414/hovercard?comment_id=126698024&amp;comment_type=issue_comment" href="https://github.com/symfony/symfony/issues/15414#issuecomment-126698024">#15414 (comment)</a>)</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Component/Validator (see <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="98395893" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/15421" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/15421/hovercard" href="https://github.com/symfony/symfony/pull/15421">#15421</a>)</li>
</ul>
<h2 dir="auto">May not handle PSR-7:</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Component/HttpFoundation</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Component/HttpKernel</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Bundle/DebugBundle</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Bundle/FrameworkBundle</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Bundle/SecurityBundle</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Bundle/TwigBundle</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Bundle/WebProfilerBundle</li>
</ul>