%PDF- %PDF-
Direktori : /var/www/html/kpk/api/vendor/zendframework/zend-diactoros/src/ |
Current File : /var/www/html/kpk/api/vendor/zendframework/zend-diactoros/src/Server.php |
<?php /** * @see https://github.com/zendframework/zend-diactoros for the canonical source repository * @copyright Copyright (c) 2015-2018 Zend Technologies USA Inc. (http://www.zend.com) * @license https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License */ namespace Zend\Diactoros; use OutOfBoundsException; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use function property_exists; /** * "Serve" incoming HTTP requests * * Given a callback, takes an incoming request, dispatches it to the * callback, and then sends a response. * * @deprecated since 1.8.0. We recommend using the `RequestHandlerRunner` class * from the zendframework/zend-httphandlerrunner package instead. */ class Server { /** * @var callable */ private $callback; /** * Response emitter to use; by default, uses Response\SapiEmitter. * * @var Response\EmitterInterface */ private $emitter; /** * @var ServerRequestInterface */ private $request; /** * @var ResponseInterface */ private $response; /** * Constructor * * Given a callback, a request, and a response, we can create a server. * * @param callable $callback * @param ServerRequestInterface $request * @param ResponseInterface $response */ public function __construct( callable $callback, ServerRequestInterface $request, ResponseInterface $response ) { $this->callback = $callback; $this->request = $request; $this->response = $response; } /** * Allow retrieving the request, response and callback as properties * * @param string $name * @return mixed * @throws OutOfBoundsException for invalid properties */ public function __get($name) { if (! property_exists($this, $name)) { throw new OutOfBoundsException('Cannot retrieve arbitrary properties from server'); } return $this->{$name}; } /** * Set alternate response emitter to use. * * @param Response\EmitterInterface $emitter */ public function setEmitter(Response\EmitterInterface $emitter) { $this->emitter = $emitter; } /** * Create a Server instance * * Creates a server instance from the callback and the following * PHP environmental values: * * - server; typically this will be the $_SERVER superglobal * - query; typically this will be the $_GET superglobal * - body; typically this will be the $_POST superglobal * - cookies; typically this will be the $_COOKIE superglobal * - files; typically this will be the $_FILES superglobal * * @param callable $callback * @param array $server * @param array $query * @param array $body * @param array $cookies * @param array $files * @return static */ public static function createServer( callable $callback, array $server, array $query, array $body, array $cookies, array $files ) { $request = ServerRequestFactory::fromGlobals($server, $query, $body, $cookies, $files); $response = new Response(); return new static($callback, $request, $response); } /** * Create a Server instance from an existing request object * * Provided a callback, an existing request object, and optionally an * existing response object, create and return the Server instance. * * If no Response object is provided, one will be created. * * @param callable $callback * @param ServerRequestInterface $request * @param null|ResponseInterface $response * @return static */ public static function createServerFromRequest( callable $callback, ServerRequestInterface $request, ResponseInterface $response = null ) { if (! $response) { $response = new Response(); } return new static($callback, $request, $response); } /** * "Listen" to an incoming request * * If provided a $finalHandler, that callable will be used for * incomplete requests. * * @param null|callable $finalHandler */ public function listen(callable $finalHandler = null) { $callback = $this->callback; $response = $callback($this->request, $this->response, $finalHandler); if (! $response instanceof ResponseInterface) { $response = $this->response; } $this->getEmitter()->emit($response); } /** * Retrieve the current response emitter. * * If none has been registered, lazy-loads a Response\SapiEmitter. * * @return Response\EmitterInterface */ private function getEmitter() { if (! $this->emitter) { $this->emitter = new Response\SapiEmitter(); } return $this->emitter; } }