package and depencies

This commit is contained in:
RafficMohammed
2023-01-08 02:57:24 +05:30
parent d5332eb421
commit 1d54b8bc7f
4309 changed files with 193331 additions and 172289 deletions

View File

@@ -28,25 +28,34 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
*/
final class ControllerArgumentsEvent extends KernelEvent
{
private $controller;
private $arguments;
private ControllerEvent $controllerEvent;
private array $arguments;
private array $namedArguments;
public function __construct(HttpKernelInterface $kernel, callable $controller, array $arguments, Request $request, ?int $requestType)
public function __construct(HttpKernelInterface $kernel, callable|ControllerEvent $controller, array $arguments, Request $request, ?int $requestType)
{
parent::__construct($kernel, $request, $requestType);
$this->controller = $controller;
if (!$controller instanceof ControllerEvent) {
$controller = new ControllerEvent($kernel, $controller, $request, $requestType);
}
$this->controllerEvent = $controller;
$this->arguments = $arguments;
}
public function getController(): callable
{
return $this->controller;
return $this->controllerEvent->getController();
}
public function setController(callable $controller)
/**
* @param array<class-string, list<object>>|null $attributes
*/
public function setController(callable $controller, array $attributes = null): void
{
$this->controller = $controller;
$this->controllerEvent->setController($controller, $attributes);
unset($this->namedArguments);
}
public function getArguments(): array
@@ -57,5 +66,38 @@ final class ControllerArgumentsEvent extends KernelEvent
public function setArguments(array $arguments)
{
$this->arguments = $arguments;
unset($this->namedArguments);
}
public function getNamedArguments(): array
{
if (isset($this->namedArguments)) {
return $this->namedArguments;
}
$namedArguments = [];
$arguments = $this->arguments;
foreach ($this->controllerEvent->getControllerReflector()->getParameters() as $i => $param) {
if ($param->isVariadic()) {
$namedArguments[$param->name] = \array_slice($arguments, $i);
break;
}
if (\array_key_exists($i, $arguments)) {
$namedArguments[$param->name] = $arguments[$i];
} elseif ($param->isDefaultvalueAvailable()) {
$namedArguments[$param->name] = $param->getDefaultValue();
}
}
return $this->namedArguments = $namedArguments;
}
/**
* @return array<class-string, list<object>>
*/
public function getAttributes(): array
{
return $this->controllerEvent->getAttributes();
}
}

View File

@@ -27,7 +27,9 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
*/
final class ControllerEvent extends KernelEvent
{
private $controller;
private string|array|object $controller;
private \ReflectionFunctionAbstract $controllerReflector;
private array $attributes;
public function __construct(HttpKernelInterface $kernel, callable $controller, Request $request, ?int $requestType)
{
@@ -41,8 +43,65 @@ final class ControllerEvent extends KernelEvent
return $this->controller;
}
public function setController(callable $controller): void
public function getControllerReflector(): \ReflectionFunctionAbstract
{
return $this->controllerReflector;
}
/**
* @param array<class-string, list<object>>|null $attributes
*/
public function setController(callable $controller, array $attributes = null): void
{
if (null !== $attributes) {
$this->attributes = $attributes;
}
if (isset($this->controller) && ($controller instanceof \Closure ? $controller == $this->controller : $controller === $this->controller)) {
$this->controller = $controller;
return;
}
if (null === $attributes) {
unset($this->attributes);
}
if (\is_array($controller) && method_exists(...$controller)) {
$this->controllerReflector = new \ReflectionMethod(...$controller);
} elseif (\is_string($controller) && false !== $i = strpos($controller, '::')) {
$this->controllerReflector = new \ReflectionMethod($controller);
} else {
$this->controllerReflector = new \ReflectionFunction($controller(...));
}
$this->controller = $controller;
}
/**
* @return array<class-string, list<object>>
*/
public function getAttributes(): array
{
if (isset($this->attributes)) {
return $this->attributes;
}
if (\is_array($this->controller) && method_exists(...$this->controller)) {
$class = new \ReflectionClass($this->controller[0]);
} elseif (\is_string($this->controller) && false !== $i = strpos($this->controller, '::')) {
$class = new \ReflectionClass(substr($this->controller, 0, $i));
} else {
$class = str_contains($this->controllerReflector->name, '{closure}') ? null : (\PHP_VERSION_ID >= 80111 ? $this->controllerReflector->getClosureCalledClass() : $this->controllerReflector->getClosureScopeClass());
}
$this->attributes = [];
foreach (array_merge($class?->getAttributes() ?? [], $this->controllerReflector->getAttributes()) as $attribute) {
if (class_exists($attribute->getName())) {
$this->attributes[$attribute->getName()][] = $attribute->newInstance();
}
}
return $this->attributes;
}
}

View File

@@ -29,12 +29,8 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
*/
final class ExceptionEvent extends RequestEvent
{
private $throwable;
/**
* @var bool
*/
private $allowCustomResponseCode = false;
private \Throwable $throwable;
private bool $allowCustomResponseCode = false;
public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, \Throwable $e)
{

View File

@@ -22,9 +22,9 @@ use Symfony\Contracts\EventDispatcher\Event;
*/
class KernelEvent extends Event
{
private $kernel;
private $request;
private $requestType;
private HttpKernelInterface $kernel;
private Request $request;
private ?int $requestType;
/**
* @param int $requestType The request type the kernel is currently processing; one of
@@ -39,20 +39,16 @@ class KernelEvent extends Event
/**
* Returns the kernel in which this event was thrown.
*
* @return HttpKernelInterface
*/
public function getKernel()
public function getKernel(): HttpKernelInterface
{
return $this->kernel;
}
/**
* Returns the request the kernel is currently processing.
*
* @return Request
*/
public function getRequest()
public function getRequest(): Request
{
return $this->request;
}
@@ -63,7 +59,7 @@ class KernelEvent extends Event
* @return int One of HttpKernelInterface::MAIN_REQUEST and
* HttpKernelInterface::SUB_REQUEST
*/
public function getRequestType()
public function getRequestType(): int
{
return $this->requestType;
}
@@ -75,18 +71,4 @@ class KernelEvent extends Event
{
return HttpKernelInterface::MAIN_REQUEST === $this->requestType;
}
/**
* Checks if this is a master request.
*
* @return bool
*
* @deprecated since symfony/http-kernel 5.3, use isMainRequest() instead
*/
public function isMasterRequest()
{
trigger_deprecation('symfony/http-kernel', '5.3', '"%s()" is deprecated, use "isMainRequest()" instead.', __METHOD__);
return $this->isMainRequest();
}
}

View File

@@ -24,14 +24,12 @@ use Symfony\Component\HttpFoundation\Response;
*/
class RequestEvent extends KernelEvent
{
private $response;
private ?Response $response = null;
/**
* Returns the response object.
*
* @return Response|null
*/
public function getResponse()
public function getResponse(): ?Response
{
return $this->response;
}
@@ -48,10 +46,8 @@ class RequestEvent extends KernelEvent
/**
* Returns whether a response was set.
*
* @return bool
*/
public function hasResponse()
public function hasResponse(): bool
{
return null !== $this->response;
}

View File

@@ -26,7 +26,7 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
*/
final class ResponseEvent extends KernelEvent
{
private $response;
private Response $response;
public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, Response $response)
{

View File

@@ -25,7 +25,7 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
*/
final class TerminateEvent extends KernelEvent
{
private $response;
private Response $response;
public function __construct(HttpKernelInterface $kernel, Request $request, Response $response)
{

View File

@@ -25,36 +25,23 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
*/
final class ViewEvent extends RequestEvent
{
/**
* The return value of the controller.
*
* @var mixed
*/
private $controllerResult;
public readonly ?ControllerArgumentsEvent $controllerArgumentsEvent;
private mixed $controllerResult;
public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, $controllerResult)
public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, mixed $controllerResult, ControllerArgumentsEvent $controllerArgumentsEvent = null)
{
parent::__construct($kernel, $request, $requestType);
$this->controllerResult = $controllerResult;
$this->controllerArgumentsEvent = $controllerArgumentsEvent;
}
/**
* Returns the return value of the controller.
*
* @return mixed
*/
public function getControllerResult()
public function getControllerResult(): mixed
{
return $this->controllerResult;
}
/**
* Assigns the return value of the controller.
*
* @param mixed $controllerResult The controller return value
*/
public function setControllerResult($controllerResult): void
public function setControllerResult(mixed $controllerResult): void
{
$this->controllerResult = $controllerResult;
}