Ray.Psr7Module provides RequestProvider to get the PSR7 ServerRequest object.
$ composer require ray/psr7-module
use Ray\Di\AbstractModule;
use Ray\Psr7Module;
class AppModule extends AbstractModule
{
protected function configure()
{
$this->install(new Psr7Module);
}
}class Foo
{
public function __construct(ServerRequestInterface $serverRequest)
{
// retrieve cookies
$cookie = $serverRequest->getCookieParams(); // $_COOKIE
}
}use Psr\Http\Message\UriInterface;
class Foo
{
public function __construct(UriInterface $uri)
{
// retrieve host name
$host = $uri->getHost();
}
}use Psr\Http\Message\UploadedFileInterface;
use Ray\HttpMessage\Annotation\UploadFiles;
class Foo
{
public function __construct(
#[UploadFiles] array $files
) {
// retrieve file name
$file = $files['my-form']['details']['avatar'][0];
/* @var UploadedFileInterface $file */
$name = $file->getClientFilename(); // my-avatar3.png
}
}If you want to lazy load the ServerRequest, use Ray\Di\Di\Set attribute.
use Ray\Di\Di\Set;
use Ray\Di\ProviderInterface;
use Psr\Http\Message\ServerRequestInterface;
class Foo
{
public function __construct(
#[Set(ServerRequestInterface::class)] private ProviderInterface $requestProvider
) {}
public function onGet()
{
$request = $this->requestProvider->get();
}
}