Files
kiri-router/src/Base/Controller.php
T

91 lines
1.4 KiB
PHP
Raw Normal View History

2023-04-15 23:29:27 +08:00
<?php
declare(strict_types=1);
2023-04-15 23:31:16 +08:00
namespace Kiri\Router\Base;
2023-04-15 23:29:27 +08:00
use Kiri;
2023-04-19 12:35:39 +08:00
use Kiri\Router\Response;
use Kiri\Router\Request;
2023-04-16 02:01:26 +08:00
use Psr\Container\ContainerInterface;
2023-04-15 23:29:27 +08:00
use Psr\Log\LoggerInterface;
2023-04-15 23:40:05 +08:00
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
2023-05-26 10:16:21 +08:00
use Kiri\Di\Inject\Container;
2023-04-17 01:13:27 +08:00
use ReflectionException;
2023-04-15 23:29:27 +08:00
/**
* Class WebController
* @package Kiri\Web
2023-04-17 01:13:27 +08:00
* @property-read ContainerInterface $container
* @property-read LoggerInterface $logger
2023-04-15 23:29:27 +08:00
*/
abstract class Controller
{
2023-04-16 16:09:14 +08:00
/**
2023-04-19 12:35:39 +08:00
* @var Request
2023-04-16 16:09:14 +08:00
*/
2023-05-26 10:16:21 +08:00
#[Container(RequestInterface::class)]
2023-04-16 02:51:27 +08:00
public RequestInterface $request;
2023-04-15 23:29:27 +08:00
2023-04-16 16:09:14 +08:00
/**
2023-04-19 12:35:39 +08:00
* @var Response
2023-04-16 16:09:14 +08:00
*/
2023-05-26 10:16:21 +08:00
#[Container(ResponseInterface::class)]
2023-04-16 02:51:27 +08:00
public ResponseInterface $response;
2023-04-15 23:29:27 +08:00
2023-04-16 16:09:14 +08:00
/**
2023-04-17 01:13:27 +08:00
* @return ContainerInterface
2023-04-16 16:09:14 +08:00
*/
2023-04-17 01:13:27 +08:00
private function getContainer(): ContainerInterface
{
return Kiri::getDi();
}
2023-04-15 23:40:05 +08:00
2023-04-16 16:09:14 +08:00
/**
2023-04-17 01:13:27 +08:00
* @return LoggerInterface
* @throws ReflectionException
2023-04-16 16:09:14 +08:00
*/
2023-04-17 01:13:27 +08:00
private function getLogger(): LoggerInterface
{
return Kiri::getDi()->get(LoggerInterface::class);
}
/**
* @param string $name
* @return mixed
*/
public function __get(string $name)
{
// TODO: Implement __get() method.
return $this->{'get' . ucfirst($name)}();
}
2023-04-19 12:35:39 +08:00
/**
* @param Request $request
* @return true
*/
public function beforeAction(RequestInterface $request): bool
{
return true;
}
/**
* @param Response $response
* @return void
*/
public function afterAction(ResponseInterface $response): void
{
}
2023-04-15 23:29:27 +08:00
}