Skip to content

Instantly share code, notes, and snippets.

@christeredvartsen
Created September 13, 2019 10:35
Show Gist options
  • Save christeredvartsen/c1957b8b380caf3ef0e2f82412583634 to your computer and use it in GitHub Desktop.
Save christeredvartsen/c1957b8b380caf3ef0e2f82412583634 to your computer and use it in GitHub Desktop.
Custom response class with `withCookies` helper method for Slim 4
<?php declare(strict_types=1);
namespace App;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\ResponseInterface as Response;
use Slim\Psr7\Response as BaseResponse;
use Slim\Psr7\Cookies;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
require '../vendor/autoload.php';
class CustomResponse extends BaseResponse {
public function withCookies(Cookies $cookies) : self {
return $this->withHeader('Set-Cookie', $cookies->toHeaders());
}
}
class ResponseFactory implements ResponseFactoryInterface {
public function createResponse(int $code = 200, string $reasonPhrase = '') : Response {
return (new CustomResponse())->withStatus($code, $reasonPhrase);
}
}
$app = AppFactory::create(new ResponseFactory());
$app->get('/path', function (Request $request, Response $response) : Response {
$cookies = (new Cookies())
->set('some-cookie-name', [
'value' => 'some-cookie-value',
'path' => $request->getUri()->getPath(),
'expires' => time() + 3600,
])
->set('foo', 'bar');
$response->getBody()->write('Hello world (check cookies)');
return $response->withCookies($cookies);
});
$app->run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment