abbadon1334/atk4-fastroute

View on GitHub
src/Handler/RoutedCallable.php

Summary

Maintainability
A
0 mins
Test Coverage
C
70%
<?php
 
declare(strict_types=1);
 
namespace Abbadon1334\ATKFastRoute\Handler;
 
use Abbadon1334\ATKFastRoute\Handler\Contracts\AfterRoutableTrait;
use Abbadon1334\ATKFastRoute\Handler\Contracts\BeforeRoutableTrait;
use Abbadon1334\ATKFastRoute\Handler\Contracts\iAfterRoutable;
use Abbadon1334\ATKFastRoute\Handler\Contracts\iBeforeRoutable;
use Abbadon1334\ATKFastRoute\Handler\Contracts\iOnRoute;
 
class RoutedCallable implements iOnRoute, iAfterRoutable, iBeforeRoutable
{
use AfterRoutableTrait {
OnAfterRoute as _OnAfterRoute;
}
 
use BeforeRoutableTrait {
OnBeforeRoute as _OnBeforeRoute;
}
 
/** @var callable */
protected $func;
 
/** @var array */
protected $extra_arguments;
 
/**
* RoutedCallable constructor.
*
* @param mixed ...$extra_arguments
*/
public function __construct(callable $func, ...$extra_arguments)
{
$this->func = $func;
$this->extra_arguments = $extra_arguments;
}
 
/**
* @param mixed ...$parameters
*
* @return mixed
*/
public function onRoute(...$parameters)
{
$arguments = array_merge($this->extra_arguments, $parameters);
 
return ($this->func)(...$arguments);
}
}