1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
<?php
declare(strict_types=1);
namespace SimpleSAML\HTTP;
use Symfony\Component\HttpFoundation\Response;
/**
* Class modelling a response that consists on running some function.
*
* This is a helper class that allows us to have the new and the old architecture coexist. This way, classes and files
* that aren't PSR-7-aware can still be plugged into a PSR-7-compatible environment.
*
* @package SimpleSAML
*/
class RunnableResponse extends Response
{
/** @var array */
protected $arguments;
/** @var callable */
protected $callable;
/**
* RunnableResponse constructor.
*
* @param callable $callable A callable that we should run as part of this response.
* @param array $args An array of arguments to be passed to the callable. Note that each element of the array
*/
public function __construct(callable $callable, $args = [])
{
$this->arguments = $args;
$this->callable = $callable;
$this->charset = 'UTF-8';
parent::__construct();
}
/**
* Get the callable for this response.
*
* @return callable
*/
public function getCallable()
{
return $this->callable;
}
/**
* Get the arguments to the callable.
*
* @return array
*/
public function getArguments()
{
return $this->arguments;
}
/**
* "Send" this response by actually running the callable.
*
* @return $this
*
* Note: No return-type possible due to upstream limitations
*/
public function sendContent()
{
return call_user_func_array($this->callable, $this->arguments);
}
}
|